我有这段代码:
<script type="text/javascript">
$(document).ready(function() {
$('.classSelect').change(function() {
// somethings
});
});
</script>
并适用于所有.classSelect
。比如,如果我克隆一些这些div并且我在页面中插入,我会看到这个处理程序也会自动地为这些克隆元素工作。
所以每次克隆一个元素时,我都会为该元素创建一个新的处理程序引用?或者我错了些什么?
答案 0 :(得分:4)
.clone()
方法需要一个额外的布尔参数,允许您控制此行为(是否应克隆事件和数据):
withDataAndEvents:指示是否为事件的布尔值 处理程序应与...一起复制 要素。从jQuery 1.4开始, 元素数据也将被复制。
在版本1.5中,有第二个参数deepWithDataAndEvents
:
deepWithDataAndEvents:一个布尔值 指示事件处理程序和 所有克隆儿童的数据 元素应该被复制。默认情况下 它的值与第一个参数匹配 value(默认为false)。
因此,当克隆元素时,附加到源元素的事件处理程序也将由克隆元素执行。