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

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

isnotcherry

2017-05-08 19:26

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

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

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

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

    });

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

写回答 关注

3回答

  • 麓鹿不迷路
    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()只会保留元素本身,其他的诸如元素所关联的附加数据和绑定事件等都会被移除。

    今天晴空万里... 回复weibo_...

    没错,remove()的确会移除元素本身和自己身上的事件,但是也有返回值,如果你用一个变量去接收它的返回值,就可以使用这个元素本身,只不过数据和事件都会消失

    2017-06-02 16:13:16

    共 2 条回复 >

jQuery基础(二)—DOM篇

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

114014 学习 · 590 问题

查看课程

相似问题