gpt4 book ai didi

jQuery:在所有点击事件发生之前捕获它们?

转载 作者:行者123 更新时间:2023-12-03 21:54:50 28 4
gpt4 key购买 nike

在我的页面上,我有很多响应点击事件的各种元素。有时我需要根据某些全局标志阻止所有点击。有没有办法可以在集中位置进行此检查?

现在,我在每个事件中检查标志,例如:

var canClick = false; // Global flag

// Sample click event:
$("#someDiv").click(function(){
if(!canClick) return;

// Some stuff ...
});

我想要做的是有一个元素在任何其他元素之前捕获所有点击事件。

我尝试在文档上执行此操作,但这些事件仅在其他点击事件之后发生。

示例:

$("#someDiv").click(function(){ console.log("someDiv click"); });

$(document).click(function(){ console.log("Document click"); });

// When I click on the someDiv element it prints:
> someDiv click
> Document click

我还尝试在所有内容之上放置一个全屏 div 并使用它来捕获事件,但问题是没有任何点击都通过这个全屏 div 传播。另外,我不想依赖创建额外的元素来捕获点击,因为这感觉有点hacky。

我可以重写 jQuery 点击函数,这样我就可以把我的小支票放在那里吗?

我在这里遗漏了一些明显的东西吗?

感谢您的帮助。

最佳答案

是的,使用 .addEventListener() 并将第三个选项设置为 true。这会将监听器绑定(bind)到捕获阶段并在执行其他任何操作之前执行该函数。

下面是一个示例,这将阻止所有点击处理程序的执行:

document.addEventListener('click', function(e) {
e.stopPropagation();
}, true);

在这里查看它的实际效果:

http://jsfiddle.net/wLwMh/1/

关于jQuery:在所有点击事件发生之前捕获它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6157486/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com