Javascript 防止jQuery在删除元素时解除绑定事件
TL/DR:当从DOM中删除元素时,有没有办法防止jQuery自动解除绑定事件 在jQuery元素上调用remove时,jQuery会自动取消绑定该元素的所有事件。例如,假设我有以下内容:Javascript 防止jQuery在删除元素时解除绑定事件,javascript,jquery,Javascript,Jquery,TL/DR:当从DOM中删除元素时,有没有办法防止jQuery自动解除绑定事件 在jQuery元素上调用remove时,jQuery会自动取消绑定该元素的所有事件。例如,假设我有以下内容: var button = $("<button>Click me</button>"); $("body").append(button); button.click(function() { console.log("clicked"); }); button.remove(
var button = $("<button>Click me</button>");
$("body").append(button);
button.click(function() {
console.log("clicked");
});
button.remove();
$("body").append(button);
我试图构建一个可重用的控件,它包装jQuery元素并向其添加新行为。将事件绑定到父元素的解决方案对我不起作用,因为我无法确定该元素在DOM中的附加位置以及是否将其删除。出于性能原因,我不想将事件绑定到文档,因为可能会有很多。有没有办法阻止jQuery的默认删除行为?不要使用.remove-use.detach
演示:
.detach方法与.remove相同,只是.detach
保留与删除的元素关联的所有jQuery数据。这
方法在将删除的元素重新插入到中时非常有用
DOM在以后的时间
与.empty类似,.remove方法从
多姆。如果要删除元素本身,请使用.remove
就像里面的一切。除了元素本身,所有
与元素关联的绑定事件和jQuery数据将被删除。
要删除元素而不删除数据和事件,请使用
相反
不使用。删除使用。分离
演示:
.detach方法与.remove相同,只是.detach
保留与删除的元素关联的所有jQuery数据。这
方法在将删除的元素重新插入到中时非常有用
DOM在以后的时间
与.empty类似,.remove方法从
多姆。如果要删除元素本身,请使用.remove
就像里面的一切。除了元素本身,所有
与元素关联的绑定事件和jQuery数据将被删除。
要删除元素而不删除数据和事件,请使用
相反
哇,你不到一分钟就回答了我的问题。我不确定如何在删除文档中遗漏了分离。无论如何,谢谢你的帮助@阿伦-如果我使用分离方法,如何再次调用?@sudhar你所说的调用是什么意思?如果你使用分离方法删除一个元素。和我想要的一样again@sudhar您需要将jQuery对象引用存储在一个变量/属性中。您在不到一分钟的时间内回答了我的问题。我不确定如何在删除文档中遗漏了分离。无论如何,谢谢你的帮助@阿伦-如果我使用分离方法,如何再次调用?@sudhar你所说的调用是什么意思?如果你使用分离方法删除一个元素。和我想要的一样again@sudhar您需要将jQuery对象引用存储在变量/属性中
$("body").on("click", "button", function() {
console.log("clicked");
});
button.detach();