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节点,没有弹出消息框,我的理解对吧?
我也有在这个疑惑,后面我把
p.css('color','red').text('p1通过remove处理后,点击该元素,事件丢失')
$("body").append(p);
改成
p.css('color','red')
$("body").append(p);
发现还保留这删除前的文本
var p = $("p:first").remove();
这行代码是从文档流中删除p元素,然后赋给一个新定义变量p.新p保存了原先删除的那个对象,但是没有它的方法和数据。
不是的,remove()函数的返回值为jQuery类型,返回当前jQuery对象本身。remove()函数会移除文档中匹配的元素,但不会将匹配元素从jQuery对象中移除,不过remove()只会保留元素本身,其他的诸如元素所关联的附加数据和绑定事件等都会被移除。
jQuery基础(二)—DOM篇
114014 学习 · 590 问题
相似问题