1

无论我做什么,我都无法让这一系列动画在运行时不受点击的影响。我已经尝试.stop在每个之前放置.animate(为布尔值尝试不同的“真”/“假”组合),但这并没有达到预期的效果。

理想情况下,在队列/链完成之前,动画对点击完全没有反应。

$(window).load(function () {
    $(document).ready(function () {
        $('.title-bar, #menu-wrap').click(function () {
            if ($('#menu-wrap').offset().top - $(window).scrollTop() === 0) {
                $('#menu-wrap').animate({top : '-170px'}, 1000);    
                $('.nav').slideToggle(1400);       
                $('.lower').css('background-image', 'none');
            } else {
                $('#menu-wrap').offset().top = 0;     
                $('#menu-wrap').animate({top : '0px'}, 1000); 
                $('.nav').slideToggle(600);
                $('.lower').css({'background-image' : 'url(menu2.png)', 'background-position' : 'bottom center'});
            }
        });
   });
});

希望你能帮忙

4

2 回答 2

2

使用语法包装您的代码$(elem).is(':animated')以检查元素是否正在动画。前任:

if ( !$(this).is(':animated') ) ...

更新示例:

    $('.title-bar, #menu-wrap').click(function () {
        if ( !$(this).is(':animated') ) {
        if ($('#menu-wrap').offset().top - $(window).scrollTop() === 0) {
            $('#menu-wrap').animate({top : '-170px'}, 1000);    
            $('.nav').slideToggle(1400);       
            $('.lower').css('background-image', 'none');
        } else {
            $('#menu-wrap').offset().top = 0;     
            $('#menu-wrap').animate({top : '0px'}, 1000); 
            $('.nav').slideToggle(600);
            $('.lower').css({'background-image' : 'url(menu2.png)', 'background-position' : 'bottom center'});
        }
        }
    });
于 2012-08-17T16:46:05.960 回答
0

有一个名为 queue 的属性可以帮助你。我认为这应该会有所帮助...看起来,您应该编写一个回调函数,该函数将在其他函数完成后调用。

于 2012-08-17T16:46:23.563 回答