2012-04-17 5 views
0

Меня интересует решение для jQuery .animate бесконечный метод прерывания цикла..animate бесконечный цикл

$(element).mouseover(function() { 
    $(this).animate({ opacity: 1 }, duration, customFunc); 
}).mouseout(function() { 

}); 

И вопрос в том, как разбить этот цикл? например, в рамках события mouseout?

я могу сделать это легко с setInterval и clearInterval но есть путь к нему с .animate функции?

+3

Я не вижу бесконечный цикл (или любой цикл на все) в вашем коде. Не могли бы вы более подробно объяснить, что вы пытаетесь сделать? – nnnnnn

+0

Вы можете, независимо от каких-либо других параметров, просто вызвать 'clearInterval' в событии mouseout. –

+0

Я согласен с nnnnnn, где бесконечный цикл, если этот код не находится внутри одного? –

ответ

4

Используйте .stop метод:

http://api.jquery.com/stop/

Я предполагаю, что вы хотите, чтобы немедленно прекратить выполнение текущей анимации?

$(element).mouseover(function() { 
    $(this).animate({ opacity: 1 }, duration, customFunc); 
}).mouseout(function() { 
    $(this).stop(); 
}); 
1

Вы можете остановить анимацию, используя .stop()

http://api.jquery.com/stop/

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

вы можете использовать .data() для хранения флага, если вы должны анимировать в малейшей

http://api.jquery.com/jQuery.data/

Добавьте IF в свой customFunc, прежде чем вы снова вызовите анимацию, чтобы проверить флаг того, следует ли вам анимировать. Таким образом, вы не будете отказываться от каких-либо других обратных вызовов. В вашей наводке вы должны снова установить флаг.

0

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

http://www.2meter3.de/code/hoverFlow/

Смежные вопросы