最近在工作中使用easy ui做东西,然后发现了一些不可思议的现象,笔记一下,前事不忘后事之师!
事故现场:
增加页面和修改页面是分离的两个jsp文件.
在页面加载时会用jquery去控制一些数据加载和一些逻辑.理论上来说不希望增加页面和修改页面
互相干扰.
单独拿增加模块测是正常的.加载修改页面后再使用增加页面就会发现增加页面功能不正常.
之后通过浏览器检查发现使用jquery通过类选择器选中的dom对象的确是不正常的.经排查发现增加
页面和修改页面是用到相同的class,而用jquery获取对象时正是用此class获取,以致增加页面功能不
能正常使用.
处理方案:
修改其中一个页面与另外一个页面相同的类名以作区分,以防在增加页面js选择dom对象时获取到修改页面.
根本原因:
easy ui dialog 是通过主页面上的div 对象加载子页面实现的.在dialog加载时会把子页面dom对象加载到主页面上,dialog关闭时实际上是把div隐藏,而不是销毁dom对象,以致在关闭dialog后在主页面依然能获取到子页面上我们不希望出现的dom对象.也就是说在加载修改dialog之后我们在增加页面上依然可以获取到修改页面上的资源,同样,在加载增加dialog后在修改页面上也可以获取增加页面的资源,这只是一个加载顺序的问题.所以出现了一些不可思议的现象.以此谨记.
转载于:https://blog.51cto.com/kingstar/1946217