javascript - jquery .on() 不适用于克隆元素

标签 javascript jquery

似乎 .on() 未能绑定(bind)来自 clone() 的新创建元素

<div class="container">
<div class="add">add</div>
</div>


$(".remove").on("click",function() {
    $(this).remove();
});

$(".add").on("click", function() {
 $(this).clone().toggleClass("add remove").text("remove").appendTo($(".container"));
});

jsfiddle

为什么这不起作用?

更新: 请注意,我知道 .clone() 有两个参数,但我不想让克隆的元素继续注册到旧事件,但是一个新的,我可以使用 .off().on() 重新注册,但是我的问题是为什么之前声明的.on(".remvove") 没有捕获克隆元素的变化。

最佳答案

因为您需要将 bool 参数传递给 clone,以便所有数据和事件处理程序都将附加到克隆的元素。

https://api.jquery.com/clone/

$(".remove").on("click",function() {
    $(this).remove();
});

$(".add").on("click", function() {
 $(this).clone(true).toggleClass("add remove").text("remove").appendTo($(".container"));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="container">
<div class="add">add</div>
</div>

已编辑

$(".container").on("click", '.remove', function() {
    $(this).remove();
});

$(".add").on("click", function() {
 $(this).clone().toggleClass("add remove").text("remove").appendTo($(".container"));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="container">
<div class="add">add</div>
</div>

关于javascript - jquery .on() 不适用于克隆元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29764095/

相关文章:

javascript - 异步/等待失败的 Angular promise

javascript - 如何堆叠来自两个不同元素的按键事件和点击事件来触发相同的功能

jquery - 从多个类中获取包含字符串和数字的类

javascript - Daterangepicker 如何获取预定义日期范围的值

javascript/jquery - 在函数中设置(this)

javascript - 我怎样才能让这个响应式导航正确地向上/向下滑动?

javascript - 从嵌套数组中 react DataTable 值

jQuery $ (".class").click(); - 多个元素,点击一次事件

javascript - 在 ExtJS 中为一个元素添加多个样式元素

jQuery addClass/removeClass 仅适用于 Firefox