问答详情
源自:4-5 DOM节点删除之detach()和remove()区别

很疑惑,求分享看法

很疑惑,看到这里一知半解的,点击两个按钮都会新产生两个p,效果没看出有什么不一样啊,有同学阔以讲解一下吗?

提问者:石榴笑了 2018-08-29 20:53

个回答

  • Teaocat
    2018-09-03 11:06:46
    已采纳

    首先,看代码,

        //给页面上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:first").detach();

            p.css('color','blue').text('p2通过detach处理后,点击该元素事件存在')

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

        });

    第一步使用jQuery给p绑定了一个点击事件,在你点击按钮之前先点一下p文本会有弹框出现,

    然后你再点击第一个按钮的时候调用了remove()函数, 将第一个p标签删除并转移到下面,再次点击会发现失去了点击效果,

    其次再点击第二个按钮,回去调用detach()函数, 将上面剩下的p标签删除并转移到下面,点击时会发现点击事件还在

  • atlunix
    2018-09-17 10:31:32

    谢谢,看了石榴姐的说明才明白。

    Thank you.

  • 我听闻
    2018-09-03 15:08:00

    删除之前,点击p1和p2都会弹框,删除之后再添加的p1,点击不会弹框,因为remove会连同它的点击弹框方法都删掉,p2则是用detach删除的,只是在页面不显示,内容方法都是保存的,这样再添加 就还是会弹框

  • 我听闻
    2018-09-03 15:03:18

    https://img1.mukewang.com/5b8cdc500001f47e07490701.jpg添加id再删除

  • 我听闻
    2018-09-03 14:52:39

    建议屏蔽这一行再看效果

    https://img1.mukewang.com/5b8cda340001069d07140313.jpg

  • man_huihui
    2018-08-30 16:23:22

    两种写法,结果都是一样的