【发布时间】:2011-09-03 16:33:06
【问题描述】:
在我的页面上,我有很多响应点击事件的各种元素。 有时我需要根据一些全局标志阻止所有点击。 有没有办法让我在一个集中的位置进行这项检查?
现在在每个事件中我都会检查标志,例如:
var canClick = false; // Global flag
// Sample click event:
$("#someDiv").click(function(){
if(!canClick) return;
// Some stuff ...
});
我想做的是有一个元素可以在任何其他元素之前捕获所有点击事件。
我尝试在 document 上执行此操作,但这些事件仅在其他点击事件之后发生。
例子:
$("#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 的 click 函数,以便我可以把我的小检查放在那里吗?
我在这里遗漏了什么明显的东西吗?
感谢您的帮助。
【问题讨论】:
标签: jquery events click propagation