jQuery的append對(duì)應(yīng)的是detach還是remove

2024-03-15    分類: 網(wǎng)站建設(shè)

由于DOM中的綁定和移除的方法名為appendChild和removeChild,所以使用jQuery時(shí)也會(huì)聯(lián)想到append和remove。但實(shí)際上在jQuery中append對(duì)應(yīng)的是detach而不是remove。jQuery的remove是一個(gè)很兇殘的方法,它會(huì)把對(duì)象上綁定的事件都移除掉。 可以執(zhí)行這樣的代碼試試

$(function(){ var div=$("<div/>").click(function(e){ console.log(e); }).text("次碳酸鈷"); //劫持DOM上的removeEventListener div[0].removeEventListener=function(){ console.log("啊???我怎么被移除了。。"); }; //調(diào)用remove后再放入body中,click將永遠(yuǎn)都不會(huì)觸發(fā) div.remove().appendTo(document.body); });

這里我就不截圖了,劫持的removeEventListener方法會(huì)被調(diào)用到。上面的代碼運(yùn)行后div點(diǎn)擊事件是無(wú)效的,因?yàn)閖Query中的事件列表已經(jīng)因?yàn)閞emove的調(diào)用而清空了。所以不要輕易使用remove方法!另外,empty和html這些方法也都會(huì)調(diào)用remove,所以也要慎用!

$(function(){ var div=$("<div/>").click(function(e){ console.log(e); }).text("次碳酸鈷").appendTo(document.body); //劫持DOM上的removeEventListener div[0].removeEventListener=function(){ console.log("?。。课以趺幢灰瞥?。。"); }; //清空html,上面的劫持方法依然會(huì)被調(diào)用 $(document.body).html(""); //$(document.body).empty(); //使用empty也和html("")一樣 });

如果只需要移除DOM而保留事件應(yīng)該使用detach,例如

$(function(){ var div=$("<div/>").click(function(e){ console.log(e); }).text("次碳酸鈷").appendTo(document.body); //劫持DOM上的removeEventListener div[0].removeEventListener=function(){ console.log("?。。课以趺幢灰瞥?。。"); }; //這樣才不會(huì)移除事件,click事件可以正常觸發(fā) div.detach().appendTo(document.body); //DOM的removeChild也是如此,click事件依然可以正常觸發(fā) document.body.removeChild(div[0]); document.body.appendChild(div[0]); });

當(dāng)前題目:jQuery的append對(duì)應(yīng)的是detach還是remove
網(wǎng)頁(yè)URL:http://www.muchs.cn/news20/320370.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、域名注冊(cè)、品牌網(wǎng)站制作動(dòng)態(tài)網(wǎng)站、建站公司、Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)