Положение .animate () переопределяет ручное назначение .offset ()

0

У меня есть куча постоянно прокручиваемых объектов на экране, каждому присваивается номер. Когда вы нажмете один из своих номеров, он будет удален далеко от экрана, чтобы он мог вернуться назад. Когда я пытаюсь переназначить положение элемента с помощью смещения, он исчезает только в течение секунды, а затем продолжает прокрутку там, где он был раньше. Я думаю, это потому, что animimate() все еще продолжается, пока я пытаюсь изменить его, поэтому он меняется на секунду, а затем анимация возвращает его туда, где он был. Как переопределить анимацию, когда она находится в совершенно другой функции?

Здесь, где я пытаюсь вручную назначить:

$(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
    вместо выполнения + = 10 назначьте глобальную переменную для хранения ее значения, и обе функции будут использовать ее.
  • 0
    Я не знаю, понимаю ли я, что вы имеете в виду. Если я назначу глобальную переменную, не будет ли она просто назначать одну и ту же позицию снова и снова и никуда не переместится, когда я ее оживлю?
Показать ещё 1 комментарий
Теги:
animation

1 ответ

1
Лучший ответ

Анимация отключается от последнего. Если вы установите глобальную переменную, как упоминал Петух, вы сможете ее использовать. Попробуйте что-то вроде этого. Если это не работает, сделайте Fiddle, а затем я могу играть с ним напрямую

$(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);
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню