jQuery中.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="jquery-1.11.3.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').html('p1通过remove处理后,点击该元素,事件丢失')
        $("body").append(p);
    });

    $("button:last").click(function () {
        var p = $("p:first").detach();
        p.css('color', 'blue').text('p2通过detach处理后,点击该元素事件存在')
        $("body").append(p);
    });
</script>
</script>

</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值