关于p的问题

来源:4-4 DOM节点删除之保留数据的删除操作detach()

夜阑卧听风吹雨y

2018-07-06 20:12

<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 aa;

    $("#bt1").click(function() {

        if (!$("p").length) return; //去重

        //通过detach方法删除元素

        //只是页面不可见,但是这个节点还是保存在内存中

        //数据与事件都不会丢失

        aa = $("p").detach()

    });


    $("#bt2").click(function() {

        //把p元素在添加到页面中

        //事件还是存在

        $("body").append(p);

    });

    </script>

</body>

我划下划线的几个地方改过了,改成这样后,点击button1——删除p,对的。可是点击button2——添加p的时候,变成了添加4个p了。为什么?

写回答 关注

3回答

  • fighting加油吧
    2018-09-06 23:02:35

    之前的p就相当于你现在写的aa,它只是一个变量里面保存了$("p").detach()删除的东西,如果想要加回来那么应该append(aa)

  • 鱼头鱼脑
    2018-09-03 15:03:47

    ...你这第二个点击移动那个就触发不了,append()中的参数都不对

  • 大脸酱2673
    2018-07-07 13:45:10

    你确定你这样写的不报错?

    <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 aa;

    $("#bt1").click(function() {

    if (!$("p").length) return; 

    aa = $("p").detach()

    });


    $("#bt2").click(function() {

    $("body").append(aa);

    });

    </script>

    </body>

    这样写没问题

jQuery基础(二)—DOM篇

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

114014 学习 · 590 问题

查看课程

相似问题