如何使用jQuery在一段时间内禁用点击事件?

3

我有一个左侧树形结构,它的结构如下:

    主分类
      分类1
        子分类1
        子分类2
      分类2
        子分类3
        子分类4
        子分类5
      分类3
      .
      ..等等      

如果用户单击任何一个主分类/分类/子分类,我需要禁用/防止重复/多次单击相同的链接,直到结果出现。我该如何使用jquery实现这一点?


你能否包含你用于绑定/附加到点击事件的jQuery代码? - Manse
已经有答案了 -> https://dev59.com/S3M_5IYBdhLWcg3wt1g0 - Manse
2个回答

2
如果您使用的是jQuery 1.7,您可以使用off()on()功能。
例如:
var foo = function () {
    // code to handle some kind of event
};

// ... now foo will be called when paragraphs are clicked ...
$("body").on("click", "p", foo);


// ... foo will no longer be called.
$("body").off("click", "p", foo); 

如果您使用的是旧版本,则可以解除绑定()重新绑定()事件。
例如:
var foo = function () {
    // code to handle some kind of event
};

// ... now foo will be called when paragraphs are clicked ...
$("body p").bind("click", foo);

// ... foo will no longer be called.
$("body p").unbind("click");

1

可以使用一个类来检查是否已经点击。

如果已经点击,则不执行,并在成功和失败时删除该类。

原型 -

$('.selector').click(function(){
    if(!$(this).hasClass('someclass')){
        $(this).addClass('someclass');
        $.ajax({
          url: "test.html",
          success: function(){
            $(this).removeClass("someclass");
          },
          error: function(){
            $(this).removeClass("someclass");
          }
        });
    }
})

这个不起作用:http://jsfiddle.net/manuel/XcYqJ/ 事件已经绑定,但没有检查类是否存在。 - Manuel van Rijn
类的检查在点击事件内部。因此它不会阻止点击,而只是不执行点击内部的内容。请检查代码。 - Jayendra
抱歉!我的错。不过,使用实时事件是否更好呢?这样你就不必自己检查类是否设置了。再次抱歉,我没有仔细阅读你的代码 :) - Manuel van Rijn
np :) ... 如果元素是动态添加的,则最好使用绑定/解绑或打开/关闭操作,就像您建议的那样。 - Jayendra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接