在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中禁用绑定点击事件的主要内容,如果未能解决你的问题,请参考以下文章