Don';我不知道该放在哪里;。停止();在我的jQuery脚本中

Don';我不知道该放在哪里;。停止();在我的jQuery脚本中,jquery,Jquery,我正在用一些jQuery效果更新我客户的web库。我已经做了一些成功的修改,但现在我的最终脚本有问题。一切正常,但当你开始快速点击时,动画打破了常规模式,一切都一团糟。我知道我需要使用stop()函数,但我无法让它100%正常工作 $(function () { $(".gallery_view_switch").toggle(function () { $(this).html('Switching ...'); $(".sidebar").slid

我正在用一些jQuery效果更新我客户的web库。我已经做了一些成功的修改,但现在我的最终脚本有问题。一切正常,但当你开始快速点击时,动画打破了常规模式,一切都一团糟。我知道我需要使用stop()函数,但我无法让它100%正常工作

$(function () { 
    $(".gallery_view_switch").toggle(function () {

        $(this).html('Switching ...');
        $(".sidebar").slideToggle('slow', function () {
            $(".single_page").animate({width: 870}, 700),
            $('img.gallery').css('margin-left', '5px'), 
            $('#top').css('margin-right', '-290px'), 
            $('.gallery_view_switch').html('Show gallery navigation');   
        });

    },function () {

        $(this).html('Switching ...');
        $('img.gallery').css('margin-left', '12px'),
        $(".single_page").animate({width: 550}, 700, function () {
            $('#top').css('margin-right', '30px'), 
            $(".sidebar").slideToggle('slow'),
            $('.gallery_view_switch').html('Hide gallery navigation');
        });
    });
})
因此,我们在这里有一个“点击”操作,画廊导航的侧栏打开,内容得到了额外的大小和图像的新CSS属性,因此画廊现在有了更广阔的视野

第二次单击时,内容将获得原始大小和属性,侧边栏将切换回原始位置

我在这里试图做的是停止动画队列以获得额外的点击,并且在一切就绪并准备就绪之前不允许出现新的动画

谢谢

编辑2:

   $(function () { 

    var isExpanding = false;

    $(".gallery_view_switch").toggle(function () {

        if(!isExpanding) {           

            $(this).html('Switching ...');

            $(".sidebar").slideToggle('slow', function () {

                isExpanding = true;

                $(".single_page").animate({
                    width: 870
                }, 700),
                $('img.gallery').css('margin-left', '5px'), 
                $('#top').css('margin-right', '-290px'), 
                $('.gallery_view_switch').html('Show gallery navigation'); 

                isExpanding = false;

            });
        }
    },function () {
        if(!isExpanding) {

            $(this).html('Switching ...');
            $('img.gallery').css('margin-left', '12px'),

            $(".single_page").animate({
                width: 550
            }, 700, function () {

                isExpanding = true;


                $('#top').css('margin-right', '30px'), 
                $(".sidebar").stop().slideToggle('slow'),
                $('.gallery_view_switch').html('Hide gallery navigation');

                isExpanding = false;

            });
        }
    });

})
还有另一个编辑,仍然不起作用。。。我真的不明白我到底要改变什么才能让它工作?我尝试了这么多的真/假组合,没有成功,它像以前一样工作,有重叠。或者在某些真/假组合中,它被完全锁定,一旦展开就无法返回

用于动画功能:

$(function () { 
    $(".gallery_view_switch").toggle(function () {

        $(this).html('Switching ...');
        $(".sidebar").stop().slideToggle('slow', function () {
            $(".single_page").stop().animate({width: 870}, 700),
            $('img.gallery').css('margin-left', '5px'), 
            $('#top').css('margin-right', '-290px'), 
            $('.gallery_view_switch').html('Show gallery navigation');   
        });

    },function () {

        $(this).html('Switching ...');
        $('img.gallery').css('margin-left', '12px'),
        $(".single_page").stop().animate({width: 550}, 700, function () {
            $('#top').css('margin-right', '30px'), 
            $(".sidebar").stop().slideToggle('slow'),
            $('.gallery_view_switch').html('Hide gallery navigation');
        });
    });
})

我将这样做以防止双重事件:

$(function () { 

var isExpanding = false;

$(".gallery_view_switch").toggle(function () {

    if(!isExpanding) {
        //stuff
        $(".sidebar").slideToggle('slow', function () {
            isExanding = true;
            //Do your stuff
            isExpanding = false;
        });
    }
},function () {
    if(!isExpanding) {
        $(".single_page").animate({width: 550}, 700, function () {
            isExanding = true;
            //Do your stuff
            isExpanding = false;
        });
    }
});

小心,因为jQuery1.9放弃了
toggle()
函数的使用,如果我没有弄错的话….()我不认为
stop()
是您想要的。它不会阻止单击,它只会清除动画队列(并且可以选择跳到队列的末尾)。Soyuka有一个正确的想法,如下所示。请看我的编辑,但是使用js小提琴会更容易,我不明白你的方法…请使用JSFIDLE.NET。这不符合要求:
“我在这里试图做的是停止动画队列以获得额外的点击,并且在一切就绪并准备就绪之前不允许出现新动画。”
Showdev是对的,“stop()”显然在这里不起作用毕竟,我已经尝试了数小时,问题是它不会停止动画重叠(侧边栏通过内容div或其他方式)@ilight-我不认为问题出在jQuery版本中,因为我使用的是较旧的版本,而不是1.9。我确信人们以前使用切换函数来制作比我更复杂的东西。我现在正在尝试soyuka的解决方案,几分钟后会带着我的反馈回来。我对soyuka解决方案的反馈可以在我原来的,现在的e中看到邮寄。