我試着用最接近jQuery的方式,來檢查,如果點擊是一個元素之外:檢查,如果點擊的元素之外的 - 在刪除的項目
$(document).click(function(event) {
if(!$(event.target).closest("#wrapper").length) {
console.log($(event.target))
console.log("click outside of #wrapper");
}
});
$("#remove-me").click(function(){
$(this).remove();
console.log("remove me clicked");
});
$("#click-me").click(function(){
console.log("click clicked");
});
<div id="wrapper">
<div id="remove-me">click me to remove from dom</div>
<div id="click-me">click me</div>
</div>
但如果我點擊#remove-me
,該div
被刪除從DOM - 現在在太空中的某個地方 - 它不會找到任何closest()
。令人驚訝的是,document
聽衆仍然得到點擊和元素,雖然它不在DOM中了...
如果這個div
在我的包裝中,我該如何正確地找到一種方法。 這是一個jQuery問題還是有一個純Javascript方法? 爲什麼$(document).click()
偵聽器仍然會在刪除的元素上觸發?
的一種方式,我發現來檢查div
沒有parent()
...
Codepen例子:http://codepen.io/urtopal/pen/BLJgrQ
摘要/問題:
- 爲什麼是一個監聽器一個被移除的元素仍然被觸發(如果點擊了
#remove-me
,上面的例子「在#wrapper之外點擊就不應該被執行)? - 如何解決這個問題?完全沒有觸發/或者如何檢查是否被移除?
請把相關代碼(HTML)的問題。 –
我不清楚你在問什麼。當你刪除()''#刪除'它永遠消失了。該點擊處理程序將永遠不會再執行。 –
我不知道你在問什麼,一旦remove-me不見了,你只會得到click-me觸發器,因爲如果你點擊包裝器內部(除非你點擊包裝器外的空白區域),那麼沒有包裝器在包裝器之外,所以文檔綁定不會觸發。你想做什麼?澄清你正在努力實現的目標 – Huangism