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

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

qq_随便先生论芝麻的重要性_03960610

2016-11-13 11:41

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

写回答 关注

5回答

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

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

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

    UltraN...

    不是吧,p还保留了之前的元素,只不过该元素所绑定的事件没了。把p.css('color','red').text('p1通过remove处理后,点击该元素,事件丢失') 这一行注释掉,append(p)以后,发现原来的文字又回来了,说明p确实保留了原先元素的一些信息,但是点击却没了反应,说明只是事件没有了。

    2016-12-04 12:28:27

    共 3 条回复 >

  • 姜素源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搞混了,这个变量是可以单独起名字的。

    明明的明天1... 回复乱也

    事件绑定在标签元素上,事件被移除了啊,当你点击第一个button后,会出现一段新文字,你点击那些文字并不会触发alert事件

    2018-07-31 18:27:45

    共 4 条回复 >

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

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

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

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

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

jQuery基础(二)—DOM篇

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

114012 学习 · 590 问题

查看课程

相似问题