很疑惑,求分享看法

来源:4-5 DOM节点删除之detach()和remove()区别

石榴笑了

2018-08-29 20:53

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

写回答 关注

6回答

  • 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标签删除并转移到下面,点击时会发现点击事件还在

    石榴笑了

    你这样讲我很快看懂了哈哈哈感谢

    2018-09-04 10:38:11

    共 1 条回复 >

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

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

    Thank you.

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

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

    石榴笑了

    谢谢嘻嘻~看懂哩

    2018-09-04 10:37:38

    共 1 条回复 >

  • 我听闻
    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

    我听闻

    两个按钮各点一下看效果,点两下看不出效果: 第一个按钮 $("p:first").remove(),一旦p1被删除了,原来p2就是第一个p元素,你再点第一个按钮,p2也被删除;连续点两下第二个按钮也是同样道理。 你也可以给p加个id,通过id去删除,就避免出现连续点两下的情况

    2018-09-03 15:01:28

    共 1 条回复 >

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

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

    石榴笑了

    谢谢~

    2018-09-04 10:38:30

    共 1 条回复 >

jQuery基础(二)—DOM篇

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

114014 学习 · 590 问题

查看课程

相似问题