[英]Click-Event firing immediatly
我正在為按鈕注冊一個click事件,然后該按鈕應該執行一個功能,在該函數中,我為整個頁面正文注冊一個click事件。
function test_method() {
document.body.addEventListener(
"click",
function do_stuff() {
alert("test");
},
false
);
}
document.getElementById("btn_new_function").addEventListener("click", test_method, false);
我在這里要做的是捕獲頁面上任何位置的click事件,但是只能在單擊之前的按鈕創建事件之后才能捕獲。 相反,發生的事情是當我單擊按鈕時,身體的點擊事件立即觸發。 是的,因為按鈕也位於主體內,這是有道理的,但是在單擊發生時甚至沒有創建該事件,那么為什么觸發它呢?
https://jsfiddle.net/1fj0vkzr/
我該如何預防? 我只想為主體注冊click事件,而不是立即執行它。
添加stopPropagation
不會使立即事件起泡:
function test_method(e) {
e.stopPropagation();
document.body.addEventListener(
"click",
function do_stuff() {
alert("test");
},
false
);
}
同樣,您的實現可能會在每次單擊按鈕時添加偵聽器。 因此,將在主體單擊上創建多個處理程序。
更新資料
stopImmediatePropagation
在這里匹配更好( https://developer.mozilla.org/ru/docs/Web/API/Event/stopImmediatePropagation )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.