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

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节点,没有弹出消息框,我的理解对吧?

正在回答

3 回答

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

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

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

改成

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

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

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


0 回复 有任何疑惑可以回复我~
var p = $("p:first").remove();

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

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

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

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

weibo_和谐_汉子_0

搞错了吧?remove()移除了元素本身和自己身上的事件啊。
2017-05-18 回复 有任何疑惑可以回复我~
#2

今天晴空万里3294401 回复 weibo_和谐_汉子_0

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

举报

0/150
提交
取消

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

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