簡體   English   中英

JavaScript返回false和event.target

[英]Javascript return false and event.target

有人可以解釋為什么button1的點擊沒有被捕獲嗎? 我知道事件click return false將停止傳播,但它仍應通過document.addEventListener('click', function(e) {console.log(e.target);});捕獲元素document.addEventListener('click', function(e) {console.log(e.target);}); 因為我們試圖直接通過e.target而不是其父元素捕獲主要元素。

 <!DOCTYPE html> <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script> $(document).ready(function(){ $("#button1").click(function(){ return false; }); }); </script> </head> <body> <button id="button1">Button1 (dont get captured)</button> <button id="button2">Button2 (get captured)</button> <script> document.addEventListener('click', function(e) { console.log(e.target);}); </script> </body> </html> 

我無法更改jQuery代碼$("#button1").click(function(){return false}); ,但是仍然想要在單擊button1元素(使用javascript)時捕獲它,是否有任何解決方法?

我可以將另一個事件處理程序綁定到button1例如document.getElementById("button1").addEventListener("click", function(e){console.log(e.target)}); 實際上,我想捕獲很多元素(具有不同的類和ID),向每個元素添加一個事件偵聽器是不切實際的,我僅以一個按鈕為例。 ,我只是想記錄單擊哪個元素。

我無法更改頁面的jQuery代碼或HTML,我只想在chrome控制台中運行一些測試,為此我要捕獲被單擊的每個元素

謝謝

返回false; 阻止瀏覽器對button1鏈接執行默認操作。

return false的等效代碼為:

$('.button1')
   .click(function (event) {
       event.preventDefault();
       event.stopPropagation();
});

如果只想停止傳播,請使用stopPropagation()

看看這個 ,並了解更多有關的preventDefault()stopPropagation()

效率不高但為我工作

 <!DOCTYPE html> <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script> $(document).ready(function(){ $("#button1").click(function(){ return false; }); }); </script> </head> <body> <button id="button1">Button1 (dont get captured)</button> <button id="button2">Button2 (get captured)</button> <script> elements = document.querySelectorAll('body *'); elements.forEach(function(elem) { elem.addEventListener('click', function(e){ console.log(e.target); // or simply console.log(elem) }); }); </script> </body> </html> 

感謝所有人,特別是@mplungjan,他給了我這個主意

暫無
暫無

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

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