繁体   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