阻止jQuery做它的事情?

时间:2011-10-19 04:48:01

标签: jquery function iteration fade

我有这段代码。

$(document).ready(function() {
$('#box').hide();
$(window).bind('scroll', function(){
    if($(this).scrollTop() > 200) {
        $("#box").fadeIn(300);
    }
    else {
    $("#box").fadeOut(300);
    }
});
});

所以当我向下滚动200px时会出现div。当我向上滚动时,它会消失。这很好,直到我做了很多。

如果我像一个疯子一样上下滚动,即使在我停下来之后,div也会不停地淡入淡出。这与这个实例无关,它在过去发生了很多事情,我一直想知道如何解决它(通过让它尽快停止,而不是每次我上下滚动都这样做)。

这可能吗?

5 个答案:

答案 0 :(得分:3)

jQuery有一个stop()方法 - http://api.jquery.com/stop/

本文介绍如何使用它,似乎正是您正在寻找的: http://www.learningjquery.com/2009/01/quick-tip-prevent-animation-queue-buildup

答案 1 :(得分:1)

使用stopdocs功能

您只需分别拨打$('#box').stop(true,true).fadeIn(300);$('#box').stop(true,true).fadeOut(300);

答案 2 :(得分:1)

在更多动画排队之前尝试使用stop():

$(document).ready(function() {
    $('#box').hide();
    $(window).bind('scroll', function(){
        if($(this).scrollTop() > 200) {
            $("#box").stop().fadeIn(300);
        }
        else {
            $("#box").stop().fadeOut(300);
        }
    });
});

请参阅此处的文档:http://api.jquery.com/stop/

答案 3 :(得分:1)

您必须向队列添加停止功能,如下所示: $( '#框')停止(真).fadeOut(300);

function stop()描述:see here

答案 4 :(得分:0)

.clearQueue()比.stop()

工作得更好