.animate()位置覆盖手动.offset()赋值

时间:2013-11-13 16:40:23

标签: javascript jquery css animation

我在屏幕上有一堆不断滚动的对象,每个对象分配一个数字。当您按下其中一个数字时,它将远离屏幕,因此可以向上滚动。当我尝试使用偏移重新分配元素的位置时,它只会消失一秒钟然后继续滚动之前的位置。我认为这是因为当我尝试改变它时,animate()仍在继续,所以它会改变一秒,然后animate将它带回原处。当它处于一个完全不同的函数时,如何覆盖动画?

这是我尝试手动分配的地方:

$(document).ready(function(){
    $(document).keyup(function(e){
        if(e.which == 48){
            $('#foo').offset({top:8, left:-600});
        }
    });
});

这是动画功能:

$(document).ready(function(){
    setInterval(function(){
        $('#foo').animate({
            left : "+=10"
        },{ duration: 200, queue: false });
    },200);
}

1 个答案:

答案 0 :(得分:1)

动画正在消失它最后使用的东西。如果你设置像Rooster这样的全局变量,你应该可以使用它。尝试这样的事情。如果这不起作用制作一个小提琴然后我可以直接玩它

$(document).ready(function(){
    var leftPos = $('#foo').postion().left;
    $(document).keyup(function(e){
        if(e.which == 48){
            leftPos = -600;
            $('#foo').offset({top:8, left:leftPos});
        }
    });
    setInterval(function(){
        leftPos +=10;
        $('#foo').animate({
            left : leftPos
        },{ duration: 200, queue: false });
    },200);
});