2017-10-12 34 views
1

我有我的身體點擊收聽:防止身體點擊某些DOM元素

document.body.addEventListener('click', function(e){ 

}); 

它的存在,所以當用戶單擊我的網站或任何其他元素的身體,任何打開彈出窗口被關閉。

但我想阻止點擊彈出(除了X按鈕)觸發事件。

我該怎麼做?

+1

檢查它爲您提供單擊事件生成的元素的「e.target」。如果它的彈出式元素,什麼都不做 – abhishekkannojia

回答

5

您需要防止事件冒泡。爲此,請使用event.stopPropagation(),該選項將停止將點擊事件傳播到DOM中的元素(例如主體)。

所以你的情況,這將是這樣的:

document.body.addEventListener('click', function(e){ 
    // Close modal 
}); 

specificOtherElement.addEventListener('click', function(e){ 
    e.stopPropagation(); 
    // Do other stuff eventually 
}); 

進一步詳情,請參閱https://developer.mozilla.org/en-US/docs/Web/API/Event/stopPropagation