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

var p = $("p:first").remove(); 定了个变量表示什么啊

var p = $("p:first").remove(); 定了个变量表示什么啊

提问者:qq_随便先生论芝麻的重要性_03960610 2016-11-13 11:41

个回答

  • aparch
    2016-11-13 16:08:01
    已采纳

    $("p:first"),选取第一个p元素,然后删除它的子元素和自身,最后,把这个赋值给变量p,实际上,remove会把所有的数据全部删除,所以这里的变量p是无意义的,但是改用detach,则是储存被删除的变量,因为detach还是会在内存中的

    var p=$("p:first").detach()

  • 姜素源3788549
    2017-01-10 12:20:08

    remove() 方法不会把匹配的元素从 jQuery 对象中删除,因而可以在将来再使用这些匹配的元素。所以p变量保存的是remove()匹配的p元素以及其内部所有的节点。

  • UltraNeo
    2016-12-04 12:33:45

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

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

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

            

            //append之后,元素还在,但是事件没了  

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

        });

    把第二行注释掉,你发现p删除后又回来了,只不过绑定的事件没了,说明var  p这个变量确实存储了p标签的信息,也就是说remove()这个函数是有返回值的,但是返回值和detach()函数不一样,没有后者的完整。另外,我觉得可以把var p换个名字,免得和标签p搞混了,这个变量是可以单独起名字的。

  • aparch
    2016-11-14 18:42:46

    就是这个意思,实际上,因为使用了remove(),p之前的内容和事件被完全删除了,然后,就会显示的是text后面的文本,红色的字体“p1通过remove处理后,点击该元素,事件丢失”

  • 苇草May
    2016-11-13 15:49:27

    remove会将元素自身移除,同时也会移除元素内部的一切,包括绑定的事件及与该元素相关的jQuery数据.

    所以我认为这段代码只是为了表述方便