在jquery中禁用绑定点击事件

Posted

技术标签:

【中文标题】在jquery中禁用绑定点击事件【英文标题】:Disable bound click event in jquery 【发布时间】:2013-12-02 06:32:03 【问题描述】:

我尝试在 jquery 中禁用绑定的点击事件,但我发现只能取消绑定或关闭事件点击。如果我这样做 unbind() 我无法取回那些绑定的函数。

例如:我有一个三个 div 与 click 事件绑定的各种功能。在某些情况下,我不想要特定的 div 点击事件。所以我尝试 disable 该事件只能尝试 unbind() 或 off() 事件。如果我 unbind() 来自 div 的事件,那么我需要再次将这些函数绑定回该 div。 See fiddle

有没有办法在不解除绑定的情况下禁用事件并启用这些事件。

提前致谢。

【问题讨论】:

只使用一个简单的标志,点击不执行功能,除非标志为真! @ProllyGeek 如果我设置一个标志,我声明为一个全局变量。例如:如果我有 100 个 div 并且每个人都有不同的功能。然后我需要为此初始化 100 个不同的标志。 不,我的意思是当你想禁用事件时只有一个标志,你能举一个清楚的例子吗? @ProllyGeek 在这个问题中,我添加了一个小提琴示例。您可以为单个 div 的单个事件设置标志。如果我有大量 div 及其事件,我该如何处理 你什么时候想再次绑定事件,我知道如果其中一个是单击,你想从 div 的其余部分取消绑定事件,那么你应该什么时候绑定它们? 【参考方案1】:

你可以像这样停止事件:

function handler(e)
    if(yourcondition)
        e.preventDefault();
    else 

    

【讨论】:

【参考方案2】:

你可以给这些 div 一个类名。并通过此类名称调用单击事件,例如

$(".class_name").click(function() );

当您想禁用点击事件时,请使用 id 选择器删除类

$("#div_id").removeClass("class_name");

当你想添加点击事件时,然后使用 id 选择器添加类

$("#div_id").addClass("class_name");

【讨论】:

【参考方案3】:

在这个例子中

http://jsfiddle.net/prollygeek/WuNGJ/2/

您可以从所有元素中删除类指针,这样任何元素都不会响应任何绑定的动作,一旦您将类返回,它将正常响应,可以通过单击div 1来完成类绑定和取消绑定。

$(".element").on('click',function()
  if($(this).hasClass("triggered"))
     

$(".element").addClass('pointer');
$(this).removeClass("triggered");

else if($(this).hasClass("pointer"))
     

$(".pointer").removeClass("pointer");
$(this).addClass("triggered");

//do whatever
)     

【讨论】:

以上是关于在jquery中禁用绑定点击事件的主要内容,如果未能解决你的问题,请参考以下文章

jquery中click事件的累加绑定,点击一次,执行多次

js 为动态添加的元素绑定事件

为啥我应用jquery框架,对按钮绑定了一个监听事件后,按钮不能执行这个事件

jQuery Mobile Slider 禁用点击事件

jquery如何添加动态点击事件?

jquery点击一个事件更换图片,在点击更换回来