只是一个双重检查:调用$el.remove()
也会在嵌套的dom元素上删除事件处理程序(除了删除绑定到元素本身的事件处理程序)?
答案 0 :(得分:3)
来自docs
与.empty()类似,.remove()方法从DOM中获取元素。如果要删除元素本身以及其中的所有内容,请使用.remove()。除了元素本身之外,还删除了与元素关联的所有绑定事件和jQuery数据。
所以我会说是的。
这是一个简单的测试:
<div id="outer">
<div id="inner">
<div id="target">Click me!</div>
</div>
</div>
$("#target").click(function() {
alert("clicked");
});
var target = $("#target");
$("#inner").remove();
$("#outer").append(target);
所以我将一个处理程序附加到一个嵌套的div,然后我删除它的父级并将其追加回它的祖父母。点击处理程序不再绑定。
与:http://jsfiddle.net/Z4BCP/1/
比较使用.detach()
代替.remove()