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>

 

 

posted on 2012-06-27 09:41  feix760  阅读(1736)  评论(1编辑  收藏  举报