Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 防止jQuery在删除元素时解除绑定事件_Javascript_Jquery - Fatal编程技术网

Javascript 防止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(

TL/DR:当从DOM中删除元素时,有没有办法防止jQuery自动解除绑定事件

在jQuery元素上调用remove时,jQuery会自动取消绑定该元素的所有事件。例如,假设我有以下内容:

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();