【问题标题】:Disable bound click event in jquery在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 的其余部分取消绑定事件,那么你应该什么时候绑定它们?

标签: javascript jquery events


【解决方案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
      })     
      

      【讨论】:

        猜你喜欢
        • 2012-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-04
        • 1970-01-01
        • 1970-01-01
        • 2010-12-20
        • 2015-10-28
        相关资源
        最近更新 更多