jquery ui 事件发生了两次?
近来遇到了一个很”诡异“的问题,使用jquery ui时,为一事件添加一处理函数后,当事件发生时,老发现函数将被执行两次。
代码形似如下:
<div id="dialog1"> <a href="#" class="link1" onclick="return false;" >sssssss</a> <script type="text/javascript"> $(".link1").click(function(){ alert("ssssssssssssss"); }); </script> </div> <script type="text/javascript"> $("#dialog1").dialog(); </script>
当点击 链接 时总是alert()两次
起初真叫百思不得其解,一两天后终于想到了原因。
当执行$("#dialog1").dialog()时,jquery将新建一div节点,然后再把<div id="dialog1">移入此div中,而当中的<script>节点里的脚本在移入时将再执行一次, 然后问题自然就产生了,<div id="dialog1">里的脚本都将执行两次,为<a class="link1" >添加了两次点击事件!
<div id="dialog1">里的脚本越多产生的问题也将越多。
所以像<div id="dialog1">这样的东西里千万别放javascript脚本!
可以运行下面的代码试试:
<div id="dialog1"> <script type="text/javascript"> alert("sdfsdf"); </script> </div> <script type="text/javascript"> setTimeout('$("#dialog1").dialog();',2000); </script>