【问题标题】:jQuery FadeIn, FadeOut spamming bugjQuery FadeIn,FadeOut 垃圾邮件错误
【发布时间】:2013-10-16 01:45:52
【问题描述】:

我输入了一些代码来淡入和淡出一些 div,包括导航器。

我注意到一个错误,当您快速单击导航器并尝试通过向按钮发送垃圾邮件来非常快速地在 div 之间切换时,div 将被窃听,如果您检查代码,您会看到 div 正在淡入不透明度最高为 0.5,有时甚至为 0.12,然后淡出到 0.0 到 0.09 或类似的值。

这是我的代码:

$(document).ready(function(){

    var currentDiv = $("#fading_divs div:first");
        currentDiv.css("display","block");
    var divN = $("#fading_divs div").length;
    var fadeInterval;


    for(i=0; i<divN; i++){   
      $('<span />').text(i+1).appendTo('#fade_nav');   
    }

    $('#fade_nav span').eq(0).addClass('active');


    $('#fade_nav span').click(function(){ 
        clearInterval(fadeInterval);
        $('#fade_nav span').removeClass('active').eq( $(this).index() ).addClass('active');    

        currentDiv.fadeOut({duration:1000,queue:false});
        currentDiv = $("#fading_divs div").eq( $(this).index() );
        currentDiv.fadeIn({duration:1000,queue:false});

        anim();


    });

    function anim() {
        fadeInterval = setInterval(function(){
            currentDiv.fadeOut({duration:1000,queue:false});

            if(currentDiv.next().length)
                currentDiv = currentDiv.next(); 

            else
                currentDiv = currentDiv.siblings().first();

            $('#fade_nav span').removeClass('active').eq( currentDiv.index() ).addClass('active');
            currentDiv.fadeIn({duration:1000,queue:false});
        }, 4000);
    }

    anim();

});

这是一个小提琴:http://jsfiddle.net/b5PfE/

尝试向导航按钮发送垃圾邮件,直到您看到 div 几乎没有淡入或淡出。

关于如何修复它的任何建议?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    这就是我通常解决此类问题的方式:

    1. 为您的#fade_nav 跨度“激活”添加一个类
    2. 使用 $('.activated').live('click', function (event) { // });开始你的功能
    3. 在该函数中,首先从#fade_nav 中删除激活的类。这将防止按钮在您的动画过程中被点击。
    4. 在函数结束时,重新添加 .activated 类,以便再次单击按钮。

    【讨论】:

    • 如果可能的话,请给我一个 jsfiddle,我失去了你一点点:/ BTW .live() 自 1.9 起已被弃用和删除
    • 抱歉,我现在没有时间。我认为您的问题是您要在旧动画完成之前开始新动画。因此,如果您可以在动画期间禁用按钮,则可以避免该问题。
    猜你喜欢
    • 2012-01-03
    • 2012-06-29
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 2013-11-28
    • 2012-01-21
    • 1970-01-01
    相关资源
    最近更新 更多