如何在DOM中的cloned / inserted元素上触发事件?

时间:2013-05-08 23:54:12

标签: javascript jquery

我无法在元素I上触发事件克隆/插入到DOM。

检查小提琴here

HTML:

<div class="A">[THIS IS DIV A]</div>
<div class="B">CLICK TO CLONE DIV A</div>

jQuery的:

$('.A').on("click",null,function() {    
    alert('DIV A CLICK');           
});

$('.B').on("click",null,function() {        
    $('.A').clone().insertAfter('.A');          
});

如果我点击克隆的DIV A,则没有任何反应。

如何在克隆元素上触发事件?

1 个答案:

答案 0 :(得分:7)

我建议有两种解决方案。

首先,在这种情况下更好的选择是将true参数添加到clone(),例如在这种情况下它将是:

$('.A').clone(true).insertAfter('.A');

clone()的第一个参数代表:

  

“布尔值,指示是否应复制事件处理程序和数据   以及元素。默认值为false。“ - jQuery API section for clone()

这意味着所有绑定事件都将保留在每个克隆元素上。

jsFiddle here.


第二个选项,可能不是这个例子的方法,是使用on()的事件委托功能:

  

“委托事件的优势在于它们可以处理来自的事件   稍后添加到文档中的后代元素。“ - jQuery API section for on()

在这种情况下:

$(document).on("click", ".A", function() { ...

现在,每个具有类.A的新元素都会附加此click事件,甚至是克隆元素。

jsFiddle here.