javascript - Javascript 返回 false 和 event.target
问题描述
有人可以解释为什么点击button1
没有被捕获吗?我知道return false
事件click
会停止传播,但它仍然应该捕获元素,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 控制台中运行一些测试,为此我想捕获每个被点击的元素
谢谢
解决方案
返回错误;阻止浏览器对 button1 链接执行默认操作。
的等效代码return false
是:
$('.button1')
.click(function (event) {
event.preventDefault();
event.stopPropagation();
});
如果您只想停止传播,请使用stopPropagation()
.
看看这个,阅读更多关于preventDefault()和stopPropagation()
推荐阅读
- react-native - 如何在不部署到商店的情况下展示 React Native Expo 前端项目
- python - 使用重要性采样公式进行积分
- git - 更改 Git 子模块的“逻辑名称”
- reactjs - 这两种排序方法有什么区别?
- python - 为什么我不能绘制这个?(Python-足球领域)
- java - Gradle 无法使用 JavaFX 插件从 src/test 访问模块 src/main 中定义的类
- c++ - 使用 boost::geometry 将纬度和经度转换为 UTM
- ios - Swift:如何以编程方式使用 UIViews 从 Interface Builder 填充 ScrollView
- progressive-web-apps - Lighthouse PWA 审核返回“start_url 离线时不响应 200”错误
- python - 有没有办法从 gremlinpython 获取图形的 GraphML 表示