2011-12-19 3 views
1

У меня есть проблема с функцией остановки в сочетании с fadeIn.JQuery hover stop(). FadeIn() issue

Мой fadeIn установлен в 2000 мс, и я представил stop(), чтобы анимация не создавалась. Однако проблема заключается в том, что когда я использую stop (true, true), он пропускает до конца анимации. Если я использую только stop(), эффект не срабатывает в течение 100% времени при падении цели несколько раз. то есть. если есть два div с этим эффектом рядом друг с другом, и я перемещаю курсор над каждым действительно быстрым, эффект зависания не инициируется.

Вот код.

$('#menu li').hover(
//Mousein  
function() { 
    $(this).children('div').stop(true, true).fadeIn(2000); 
}, 

//Mouseout 
function() { 
    $(this).children('div').stop(true, true).fadeOut(2000); 

}); 

Есть ли способ сделать анимацию остановкой/начать правильно, не пропуская ее до конца?

+1

Вторая переменная - * jumpToEndA *: Boolean, указывающая, нужно ли немедленно завершить текущую анимацию. По умолчанию используется значение false. " Вы пробовали "(правда, ложь)"? – techie007

ответ

0

Вот что я приготовил. На самом деле это не решение, просто стартер беседы. Кажется, работает нормально, пока мышь находится внутри окна просмотра окна.

http://jsfiddle.net/mcritz/AwzQ7/

2

Вы не указываете, что именно вы имеете в виду под «не работает 100% времени.» Однако, если вы используете версию JQuery ранее, что 1.7, вы могли видеть этот известный дефект:

По состоянию на JQuery 1.7, останавливая переключены анимации преждевременно .stop() будет вызывать внутренние эффекты JQuery в отслеживание. В предыдущих версиях вызов метода .stop() перед завершенной анимацией анимации заставил анимацию терять следы ее состояния (если jumpToEnd был ложным). Любые последующие анимации начинаются с нового состояния «на полпути», иногда приводящего к исчезновению элемента.

См. «Переключение анимаций» на .stop() - jQuery API.