是否可以在正在进行时停用.click(功能)?

时间:2010-11-13 23:56:01

标签: jquery

另一位初学者 - 我自己提出的问题:

是否可以在.click(function)正在进行[向上/向下滑动并执行一些id-switch]时禁用它?

我有一堆锚使用相同的功能,我不希望用户点击另一个链接,而仍然有一些slideUp / Down正在进行。为了获得这种效果,我必须在它正在进行时阻止它。

任何想法?

4 个答案:

答案 0 :(得分:4)

您可以使用:animated选择器检查您关注的任何元素当前是否正在设置动画,如下所示:

$("a.myClass").click(function() {
  if($("a.myClass:animated").length) return false;
  //animate/do stuff
});

在设置动画的任何a.myClass元素时,点击将无效。

答案 1 :(得分:3)

你可以这样做:

$('some_selector').click(function () {
    var running = false;

    return function () {
        if (running === false) {
            running = true;
            // do animation stuff;
            // put this in your callback:
            running = false;
        }

        return false;
    };
}());

这会在running等于true时禁用动画。

答案 2 :(得分:0)

您可以在点击处理程序中设置布尔标志,并在动画结束时取消设置。

然后,在处理程序的顶部,如果设置了标志,则可以return false;

答案 3 :(得分:0)

查看:animated选择器。如文档所述,它将返回当前正在进行的所有元素。如果您要检查的是特定元素,则可以使用它的ID或类以及此选择器来检查它的动画是否正在运行。

$("#myButton").click(function(){
  if ($("#myDiv:animated").length === 0) {
    // do awesome animation here
  } else {
    // brown explosions! Dumbledore dies, so does Hedwig!
    return false;
  } 
});