如果用.stop()停止动画怎么办?

时间:2015-06-09 21:02:39

标签: jquery

更新:我制作了一个代表我的代码的Plunker,形式非常基本。如您所见,您可以导航到" map2"和" map3"然后到#34; map4"并回到" map1"轻松地点击" Go To"按钮没有搞乱导航的能力。但是,如果你"意外"单击后退按钮两次,突然堆栈被抛弃,它会导致#34;导航"。

您可以点击"转到"按钮可以根据需要多次使用,它永远不会弄乱导航。如何为后退按钮做同样的事情?

我知道的问题是没有任何东西被添加到"堆栈"变量当"转到"除非动画完成,否则单击按钮,但项目将从"堆栈中删除" " Back"单击按钮。我只是不确定如何解决这个问题。

以下是原始代码,原始解释问题。但是,如果我们可以修复Plunker表示,我将能够理解如何解决这个问题。

以下我有:

$scope.clickLinks = function(initialOut,initialIn,backIn,backOut,name){

    var $map = $('.'+initialOut+'Map');

    $map.stop().fadeOut('slow',function(){
        $('.'+initialOut+'Details,.bkbtn'+backOut).css("display","none");
        $('.'+initialIn+'Details,.bkbtn'+backIn).css("display","block");
        $('.noQuery').css("display","none");
        $("#buildingHeader").html(name);
        $('.'+initialIn+'Map').fadeIn('slow').css("display","block");

        stackMapOut.push(initialIn);
        stackMapIn.push(initialOut);
        stackBack.push(backIn);
        stackName.push(name);
    });
};

工作正常,一切都好,因为在动画完成之前没有任何东西被推送。但是,我有另一组可以单击的元素,这些元素基本上会回溯可见或不可见的元素。这是代码:

$scope.clickBack = function(){

    mapOut = stackMapOut.pop();
    mapIn = stackMapIn.pop();
    stackBack.pop();
    backIn = stackBack[stackBack.length-1];
    stackName.pop();
    nameShow = stackName[stackName.length-1];

    var $map = $('.'+mapOut+'Map');

    $map.stop().fadeOut('slow',function(){
        $('.'+ mapOut + 'Details,.bkbtn').css("display", "none");
        $('.' + mapIn + 'Details,.bkbtn'+backIn).css("display", "block");
        $(".noQuery").css("display","none");
        $("#buildingHeader").html(nameShow);
        $('.' + mapIn + 'Map').fadeIn('slow').css("display", "block");
    });
};

然而," stacks"是pop ped额外的,我不知道如何防止这种情况。我这次不能将它们全部放在.fadeOut函数中,因为它们需要在点击函数运行时启动。

我个人唯一想到的就是我需要找出如何做某事"如果动画停止。但我还不知道如何去做或去哪看。

基本上我需要一种方法来防止它们在动画停止时成为pop ped。或者重新push或其他。

0 个答案:

没有答案