[英]Javascript - Prevent Child's OnClick Firing Parent's OnClick - Without JQuery
我有兩個元素,像這樣:
var parent = document.getElementById("el");
var child = parent.children[0];
然后是一個eventListener:
parent.addEventListener("click", function() {
alert("Hello World!")
});
問題是當您單擊孩子時,將觸發父母的click事件。
我只希望在單擊父級時觸發警報,而不在單擊子級時觸發。
我沒有使用JQuery,也不會使用。
我在Google上進行了搜索,所有結果都使用e.stopPropogation(即JQuery)。
那么,在普通JS中執行此操作的最佳方法是什么?
非常感謝。
您需要防止事件冒泡到父元素。 為此,您必須將另一個事件處理程序綁定到子元素:
child.addEventListener("click", function(e) {
e.stopPropagation();
});
單擊事件氣泡,這意味着除非停止傳播,否則事件從子級到父級沿DOM樹傳播。
您可以檢查clicked元素的ID並使用它來控制觸發器:
<div id="el">
This is a thing.
<div id="el2"> This is a second thing. </div>
</div>
var parent = document.getElementById("el");
var child = parent.children[0];
parent.addEventListener("click", function(e) {
console.log(e);
if(e.srcElement.id == 'el') {
alert('Hello world');
}
});
我不知道這是否在所有瀏覽器中都能正常運行,但在Chrome瀏覽器中對我有效。
如果我沒記錯的話,那就是event.stopPropagation();
您需要的代碼行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.