调用$ el.remove()也会在嵌套的dom元素上删除eventhandlers吗?

时间:2014-03-27 13:27:48

标签: jquery

只是一个双重检查:调用$el.remove()也会在嵌套的dom元素上删除事件处理程序(除了删除绑定到元素本身的事件处理程序)?

1 个答案:

答案 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);

http://jsfiddle.net/Z4BCP/

所以我将一个处理程序附加到一个嵌套的div,然后我删除它的父级并将其追加回它的祖父母。点击处理程序不再绑定。

与:http://jsfiddle.net/Z4BCP/1/

比较

使用.detach()代替.remove()