jQuery的append对应的是detach还是remove

2024-03-15    分类: 网站建设

由于DOM中的绑定和移除的方法名为appendChild和removeChild,所以使用jQuery时也会联想到append和remove。但实际上在jQuery中append对应的是detach而不是remove。jQuery的remove是一个很凶残的方法,它会把对象上绑定的事件都移除掉。 可以执行这样的代码试试

$(function(){ var div=$("<div/>").click(function(e){ console.log(e); }).text("次碳酸钴"); //劫持DOM上的removeEventListener div[0].removeEventListener=function(){ console.log("啊!?我怎么被移除了。。"); }; //调用remove后再放入body中,click将永远都不会触发 div.remove().appendTo(document.body); });

这里我就不截图了,劫持的removeEventListener方法会被调用到。上面的代码运行后div点击事件是无效的,因为jQuery中的事件列表已经因为remove的调用而清空了。所以不要轻易使用remove方法!另外,empty和html这些方法也都会调用remove,所以也要慎用!

$(function(){ var div=$("<div/>").click(function(e){ console.log(e); }).text("次碳酸钴").appendTo(document.body); //劫持DOM上的removeEventListener div[0].removeEventListener=function(){ console.log("啊!?我怎么被移除了。。"); }; //清空html,上面的劫持方法依然会被调用 $(document.body).html(""); //$(document.body).empty(); //使用empty也和html("")一样 });

如果只需要移除DOM而保留事件应该使用detach,例如

$(function(){ var div=$("<div/>").click(function(e){ console.log(e); }).text("次碳酸钴").appendTo(document.body); //劫持DOM上的removeEventListener div[0].removeEventListener=function(){ console.log("啊!?我怎么被移除了。。"); }; //这样才不会移除事件,click事件可以正常触发 div.detach().appendTo(document.body); //DOM的removeChild也是如此,click事件依然可以正常触发 document.body.removeChild(div[0]); document.body.appendChild(div[0]); });

当前题目:jQuery的append对应的是detach还是remove
网页URL:https://www.cdcxhl.com/news20/320370.html

成都网站建设公司_创新互联,为您提供微信小程序域名注册品牌网站制作动态网站建站公司Google

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站建设