为了账号安全,请及时绑定邮箱和手机立即绑定

关于detach方法

<html>

<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script>
    <style type="text/css">
    p {
        color: red;
    }
    </style>
</head>

<body>
    <p>P元素1,默认给绑定一个点击事件</p>
    <p>P元素2,默认给绑定一个点击事件</p>
    <button id="bt1">点击删除 p 元素</button>
    <button id="bt2">点击移动 p 元素</button>
    <script type="text/javascript">
    $('p').click(function(e) {
        alert(e.target.innerHTML)
    })
    var p;
    $("#bt1").click(function() {
        if (!$("p").length) return; //去重
        //通过detach方法删除元素
        //只是页面不可见,但是这个节点还是保存在内存中
        //数据与事件都不会丢失
        p = $("p").remove();
    });

    $("#bt2").click(function() {
        //把p元素在添加到页面中
        //事件还是存在
        $("body").append(p);
    });
    </script>
</body>

</html>

这里我把detach改成了remove,怎么还是能够append呢?

正在回答

1 回答

p = $("p").remove();  p是一个对象,存储的是两个p节点 【<p>P元素1,默认给绑定一个点击事件</p> <p>P元素2,默认给绑定一个点击事件</p>】,

remove删除了两个p节点及其绑定的事件,把删除的两个p节点存在了变量p里面,

detach删除了两个p节点,但是其绑定的事件还在,一同存在了变量p里面,

bt2 点击事件的时候又把变量p加到body上了

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
jQuery基础(二)—DOM篇
  • 参与学习       114013    人
  • 解答问题       590    个

jQuery第二阶段开启DOM修炼,了解创建、插入、删除与替换

进入课程

关于detach方法

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信