предотвратить обратные вызовы при остановке родительской функции в jquery? - PullRequest
2 голосов
/ 27 января 2011

Это выглядит примерно так:

$("example").hover(function(){
        ("example").stop().show(/*More Code*/, callback());
    }, function(){
        ("example").stop().hide(/*More Code*/, callback());
    }
)

Так что, если мышь покинет область до завершения первой анимации, она остановит все анимации и пропустит обратные вызовы.Есть ли способ использовать stop () и по-прежнему выполнять функции обратного вызова?

1 Ответ

1 голос
/ 27 января 2011

Используйте setTimeout, который рассчитан на выстрел в конце анимации вместо обратного вызова.

$("example").hover(function(){
        $("example").stop().show(1000);
        setTimeout(function() { /* do something */ }, 1000);
    }, function(){
        $("example").stop().hide(1000);
        setTimeout(function() { /* do something */ }, 1000);
    }
);

Другой вариант - использовать .stop(true,true) вместо .stop().

Это очищает очередь, отправляет анимацию до конца и запускает обратный вызов.

$("example").hover(function(){
        $("example").stop(true,true).show(1000);
    }, function(){
        $("example").stop(true,true).hide(1000);
    }
);
...