jQuery:在所有点击事件发生之前陷阱?

前端之家收集整理的这篇文章主要介绍了jQuery:在所有点击事件发生之前陷阱?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的页面上,我有很多各种各样的元素来响应点击事件.
有时我需要根据一些全局标志阻止所有的点击.
有没有办法我可以在集中的位置进行这种检查?

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

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

我也试着把全屏幕放在所有的东西之上,并使用它来捕捉事件,但问题是没有一个点击被传播通过这个全屏幕.此外,我不想依赖创建额外的元素来捕获点击,因为它感觉有点黑客.

我可以覆盖jQuery点击功能,以便我可以把我的小检查在那里吗?

有没有什么明显的我在这里错过?

感谢任何帮助.

解决方法

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

以下是一个例子:这将阻止所有点击处理程序执行:

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

在这里看到它:

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

猜你在找的jQuery相关文章