jquery ui的dialog平时用的很多,在和django一起使用的时候,为了重用性考虑,我往往会把dialog里面的内容作为一个模块,那么模块里面也会有一些js代码,一般如
<script>
$(function(){
...
});
</script>
的格式写在最头上。于是今天碰到了问题,我在一个html文件里定义了一个dialog,$('#my-dlg').dialog({...}),
在<div id="my-dlg">里,我直接包含了定义好的模块文件,其中有一些js代码,在运行以后我发现这些代码被执行了两次。研究后发现是在页面加载后和dialog创建时分别调用了一次dialog的div里的document.ready,因此里面的代码也就被执行了两次。解决方法是,在创建dialog后动态的载入内容,既$('#my-dlg').dialog({...}).load('...'),这样就只会执行一次了