0

我有一个关于 jQuery 的相对简单的问题(请原谅我是菜鸟)。我在 div 上使用了“fadeToggle”(单击)功能来显示另一个元素,但是如果用户单击 div 说 100 次,我如何阻止动画在每次单击时一遍又一遍地播放?

4

4 回答 4

2

您还可以在调用之前验证队列是否为空,

$("button").click(function() {
    if (!$animatedElement.queue().length) {
      $animatedElement.fadeToggle("slow", "linear");
    }
});​

http://jsfiddle.net/EU5WK/

于 2012-05-16T18:44:50.067 回答
1

我已经看到了这个问题的一个变体,其中使用了is running?一种变量:

http://jsfiddle.net/VRDP9/

running = false;

$("button:first").click(function() {
    if (!running) {
      running = true;
      $("p:first").fadeToggle("slow", "linear", function() { running = false; });
    }
});​
于 2012-05-16T18:37:04.943 回答
0

您需要设置某种在第一次迭代中激活的指标,然后在该函数开始时检查它。这可以是一个变量,或者您可以在目标元素上添加并检查类名。

于 2012-05-16T18:34:21.100 回答
0

最简单的方法是使用 .(stop) 示例:

<div id="hover_on_me_box>Hover on me!</div>

<div style="display:none" id="hidden_box">Content....</div>

$("#hover_on_me_box").hover(function() {
    $("#hidden_box").stop().fadeToggle("500");
});

在此处阅读更多信息:http: //www.learningjquery.com/2009/01/quick-tip-prevent-animation-queue-buildup

于 2017-02-01T16:12:57.217 回答