Есть ли способ отменить зависание jQuery, пока оно происходит? - PullRequest
4 голосов
/ 21 августа 2011

Я использую событие при наведении курсора jQuery, чтобы заставить элемент «светиться» (изменение непрозрачности от 0,7 до 1) и затем «светиться», когда мышь уходит.Это замечательно, за исключением случаев, когда вы случайно запускаете мышь над элементом несколько раз.Затем элемент начнет мигать («светится» и «светится») столько раз, сколько мышь прошла через него.

Это не только уродливо, но и означает, что любое другое событие jQuery .animate (), котороедолжен быть запущен должен ждать, пока эти последовательные вспышки не закончились.Пример можно найти здесь: http://www.rootsoftllc.com/accounts/

Есть ли способ сообщить событию при наведении курсора jQuery, что оно может быть запущено только один раз, а затем ему нужно дождаться его завершения, прежде чем это можно сделать, кроме каких-либо событий мыши?

Ответы [ 3 ]

3 голосов
/ 21 августа 2011

Вы можете использовать .stop(true, true), чтобы остановить и очистить очередь анимации, например:

$('.window').hover(function() {
    $(this).stop(true, true).animate({opacity: 1}, 500);
}, function() {
    $(this).stop(true, true).animate({opacity: 0.7}, 500);
});
3 голосов
/ 21 августа 2011

Да, на самом деле все довольно просто.Перед началом анимации с .animate() поместите туда .stop(), чтобы остановить другие анимации в очереди.

Прочтите об этом здесь:

Электронная документация jquery на .stop()

1 голос
/ 21 августа 2011

В jQuery вы можете присвоить каждой анимации свою очередь.Я предлагаю вам дать эффекту наведения собственную очередь, чтобы она не мешала другим анимациям.Затем вы можете проверить, как долго мышь находится внутри элемента.Если для завершения анимации прошло недостаточно времени, используйте .stop () , чтобы преждевременно остановить анимацию, и сделайте быструю анимацию обратно туда, где она должна быть.

...