clone()是否为事件处理程序生成另一个引用?

时间:2011-04-26 15:13:17

标签: jquery

我有这段代码:

<script type="text/javascript">
    $(document).ready(function() {
        $('.classSelect').change(function() {
            // somethings
        });
    });
</script>

并适用于所有.classSelect。比如,如果我克隆一些这些div并且我在页面中插入,我会看到这个处理程序也会自动地为这些克隆元素工作。

所以每次克隆一个元素时,我都会为该元素创建一个新的处理程序引用?或者我错了些什么?

1 个答案:

答案 0 :(得分:4)

.clone()方法需要一个额外的布尔参数,允许您控制此行为(是否应克隆事件和数据):

  

withDataAndEvents:指示是否为事件的布尔值   处理程序应与...一起复制   要素。从jQuery 1.4开始,   元素数据也将被复制。

在版本1.5中,有第二个参数deepWithDataAndEvents

  

deepWithDataAndEvents:一个布尔值   指示事件处理程序和   所有克隆儿童的数据   元素应该被复制。默认情况下   它的值与第一个参数匹配   value(默认为false)。

因此,当克隆元素时,附加到源元素的事件处理程序也将由克隆元素执行。