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

var p = $("p:first").remove();,这一句代码中的p是不是其实什么东西都没有?

$("button:first").click(function() {

        var p = $("p:first").remove();

        p.css('color','red').text('p1通过remove处理后,点击该元素,事件丢失')

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

    });

这段代码里,p是不是没有东西了?之后给它定义新的样式和文字,并附加到body中。然后,因为remove()会把节点上的事件与数据都删除,所以之前添加的点击事件也早就被删除了.因此点击新定义的p节点,没有弹出消息框,我的理解对吧?

提问者:isnotcherry 2017-05-08 19:26

个回答

  • 麓鹿不迷路
    2018-05-29 19:50:57

    我也有在这个疑惑,后面我把

     p.css('color','red').text('p1通过remove处理后,点击该元素,事件丢失')

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

    改成

    p.css('color','red')

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

    发现还保留这删除前的文本


  • 白船袜七分裤
    2017-10-03 21:15:25

    var p = $("p:first").remove();

    这行代码是从文档流中删除p元素,然后赋给一个新定义变量p.新p保存了原先删除的那个对象,但是没有它的方法和数据。

  • 慕粉2051572680
    2017-05-09 01:01:32

    不是的,remove()函数的返回值为jQuery类型,返回当前jQuery对象本身。remove()函数会移除文档中匹配的元素,但不会将匹配元素从jQuery对象中移除,不过remove()只会保留元素本身,其他的诸如元素所关联的附加数据和绑定事件等都会被移除。