为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

正在回答

5 回答

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

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

0 回复 有任何疑惑可以回复我~
#1

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

var p = $("p:first").remove(); p.css('color','red').text('p1通过remove处理后,点击该元素,事件丢失') 这段代码能不能理解成 $("p:first").remove().css('color','red').text('p1通过remove处理后,点击该元素,事件丢失')
2016-11-14 回复 有任何疑惑可以回复我~
#2

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

非常感谢!
2016-11-15 回复 有任何疑惑可以回复我~
#3

UltraNeo

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

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

0 回复 有任何疑惑可以回复我~

$("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 回复 有任何疑惑可以回复我~
#1

慕勒6241362

感觉很奇怪啊,p这个变量竟然还能存储p标签的信息,明明都把这个节点删除了,不知道什么原因。
2016-12-05 回复 有任何疑惑可以回复我~
#2

UltraNeo 回复 慕勒6241362

变量p和标签p没有任何关系,可以给变量起其它的名字,比如abc,都是可以的,相当于把p标签的内容用一个临时变量存到内存中来了
2016-12-05 回复 有任何疑惑可以回复我~
#3

乱也 回复 慕勒6241362

应该是变量p储存着元素标签这类html结构信息,点击事件与html结构分离,所以被移除了;但是你把事件绑定在标签元素上,事件还是没有被移除,准确说,变量p储存着p元素这个节点里包含所有信息
2017-03-12 回复 有任何疑惑可以回复我~
#4

明明的明天12 回复 乱也

事件绑定在标签元素上,事件被移除了啊,当你点击第一个button后,会出现一段新文字,你点击那些文字并不会触发alert事件
2018-07-31 回复 有任何疑惑可以回复我~
查看1条回复

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

1 回复 有任何疑惑可以回复我~

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

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信