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