簡體   English   中英

如何僅在點擊事件監聽器被觸發后才添加點擊事件監聽器?

[英]How to add click event listener only after click event listener has been triggered?

我正在嘗試實現以下功能:用戶單擊按鈕后,我想將單擊事件偵聽器添加到 window 元素以提醒消息(例如)。

為此考慮以下代碼片段:

 <button id="b1">click</button> <script> document.querySelector("#b1").addEventListener('click', () => { window.addEventListener("click", () => { alert("hello"); }); }) </script>

但是,不幸的是,當用戶最初點擊按鈕(我不想要)時,上面的代碼也會發出警告消息。 關於如何實現功能的任何想法?

最好添加 window 單擊事件偵聽器並有一個標志來確定是否應顯示警報。

您使用的方法的問題是,每次用戶單擊按鈕時,您都會向 window 添加一個新的事件偵聽器。然后,每次單擊文檔時,這將疊加並觸發多次。

要阻止按鈕單擊傳遞到文檔並觸發 window 事件偵聽器,您可以使用事件stopPropagation()方法,如下所示。

 let hasButtonBeenClicked = false; window.addEventListener("click", () => { if(hasButtonBeenClicked) { alert("hello"); hasButtonBeenClicked = false; } }); document.querySelector("#b1").addEventListener('click', (e) => { e.stopPropagation() hasButtonBeenClicked = true; })
 <button id="b1">click</button>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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