[英]Should I be using “this” or “event.target” in javascript?
[英]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.