您现在的位置:首页 >> 前端 >> 内容

DOM节点删除之detach()和remove()区别

时间:2017/8/4 13:30:36 点击:

  核心提示:remove()和detach()可能就是其中的一个,可能remove()我们用得比较多,而detach()就可能会很少了通过一张对比表来解释2个方法之间的不同 方法名 参数 事件及数据是...

remove()和detach()可能就是其中的一个,可能remove()我们用得比较多,而detach()就可能会很少了

通过一张对比表来解释2个方法之间的不同

方法名

参数

事件及数据是否也被移除

元素自身是否被移除

remove

支持选择器表达

是(无参数时),有参数时要根据参数所涉及的范围

detach

参数同remove

情况同remove

remove:移除节点

无参数,移除自身整个节点以及该节点的内部的所有节点,包括节点上事件与数据

有参数,移除筛选出的节点以及该节点的内部的所有节点,包括节点上事件与数据

detach:移除节点

移除的处理与remove一致

与remove()不同的是,所有绑定的事件、附加的数据等都会保留下来

例如:$("p").detach()这一句会移除对象,仅仅是显示效果没有了。但是内存中还是存在的。当你append之后,又重新回到了文档流中。就又显示出来了。
<html>

<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <style type="text/css">
    p{
        border: 1px solid red;
    }
    </style>
    <script src="https://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
</head>
<body>
    <h3>给页面2个p元素节点绑定点击事件,点击后弹出自己本身的节点内容</h3>
    <p>元素p1,同时绑定点击事件</p>
    <p>元素p2,同时绑定点击事件</p>
    <h3>通过点击2个按钮后观察方法处理的区别</h3>
    <button>点击通过remove处理元素p1</button>
    <button>点击通过detach处理元素p2</button>
</body>
<script type="text/javascript">
    //给页面上2个p元素都绑定时间
    $('p').click(function(e) {
        alert(e.target.innerHTML)
    })


    $("button:first").click(function() {
        var p = $("p:first").remove();
        p.css('color','red').text('p1通过remove处理后,点击该元素,事件丢失')
        $("body").append(p);
    });//这里的事件数据都会在内存里面消失


    $("button:last").click(function() {
        var p = $("p:last").detach();//这里的是数据暂时消失  事件却留了下来 当你append的时候 数据又回来了
        p.css('color','blue').text('p2通过detach处理后,点击该元素事件存在')
        $("body").append(p);    });
</script>
</script>


</html>

Tags:DO OM M节 节点 
作者:网络 来源:qq_3703664