簡體   English   中英

點擊事件立即觸發

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM