首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jQuery:在所有点击事件发生之前捕获它们?

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

Stack Overflow用户
提问于 2011-05-28 04:41:39
回答 2查看 18.1K关注 0票数 17

在我的页面上,我有很多不同的元素来响应点击事件。有些时候,我需要基于某个全局标志来阻止所有点击。有没有办法让我在一个集中的位置进行这项检查?

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

代码语言:javascript
复制
var canClick = false; // Global flag

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

  // Some stuff ...
});

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

我尝试在文档上这样做,但这些事件只在其他单击事件之后发生。

示例:

代码语言:javascript
复制
$("#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传播。此外,我不想依赖创建额外的元素来捕获点击,因为这感觉有点老套。

我可以重写jQuery点击函数,这样我就可以把我的小支票放进去了吗?

有什么明显的我遗漏了什么吗?

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2011-05-28 04:53:25

您可以捕获所有的单击事件,然后触发一个自定义事件,在此事件中,您可以在检查后绑定侦听器

代码语言:javascript
复制
$("#someDiv").bind('awesomeEvent', function() {
    //do stuff here
}

$(*).click(function() {
    if(canClick) {
        $(this).trigger('awesomeEvent');
    }
}

编辑我应该提一下,从性能的角度来看,使用$(*)选择器不是一个好主意。你真的应该以某种方式尝试缩小范围。

票数 0
EN

Stack Overflow用户

发布于 2020-01-19 10:50:02

使用Inject Javascript:

代码语言:javascript
复制
view.loadUrl(
                    "javascript:(function() {"


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

                            + "})()"
            );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6157486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档