近期在使用easyui搭建框架时发现页面中使用的dialog会随着页面刷新加载多次,导致在取值时发生错误。
原因应该是easyui把dialog放在了body下,而刷新时只重新加载panel下的所有元素,就会导致多次加载的问题。
页面使用的是layout布局,切换页面代码如下:
$("body").layout("panel","center").panel({ title:"所在位置:"+title, href:href });
这样每回切换页面时在主页的body下都会留下上个页面的dialog。
解决方案:
在每个页面的dialog中增加一个样式(名称随便起)pop,如图:
在切换页面代码之前增加删除dialog的代码:
//切换页面时清除dialog缓存,页面中所有dialog都要定义pop样式 $(".pop").each(function(){ $(this).dialog("destroy", false); });
就可以清除之前页面的缓存了(参数一定要写false,true的话是跳过了onBeforeDestroy回调函数)。