jQuery: прерывание fadeIn () / fadeOut ()

Допустим, я вызвал $ element.fadeIn (200). Через 100 мс на этой странице что-то происходит, и я хочу прервать это исчезновение и немедленно вызвать fadeOut (). Как я могу это сделать?

Если вы вызываете вызов $ element.fadeIn (200) .fadeOut (0), fadeOut () происходит только после завершения fadeIn ().

Кроме того, Есть ли способ проверить $ element, чтобы определить, работает ли fadeIn () или fadeOut ()? Есть ли в $ element какой-либо член .data (), который изменяется?

17
задан JamesBrownIsDead 1 September 2010 в 17:57
поделиться

2 ответа

AFAIK fadeIn и fadeOut работают синхронно, так что нет, я не думаю, что вы можете прервать их во время работы. Вам придется подождать, пока он не будет выполнен.

Если вы вызовете метод stop для элемента, он остановит все анимации. Причина, по которой вызов fadeOut в вашем примере не вызывается до тех пор, пока fadeIn, заключается в том, что анимации выполняются в порядке очереди.

2
ответ дан 30 November 2019 в 11:37
поделиться

Всегда рекомендуется хранить функции, имеющие дело с анимацией и т.д., внутри функции обратного вызова. Вы можете узнать, завершилась ли функция fadeIn(), выполнив свою функцию из своего обратного вызова, например:

$element.fadeIn(200, function(){
   //do callback
});

Если это невозможно, вы можете объявить переменную вне функции. Скажем, var elmFadeInRunning = false. Измените его на true прямо перед вызовом fadeIn и измените его обратно на false в обратном вызове fadeIn. Таким образом, вы можете узнать, работает ли он, если elmFadeInRunning == true.

1
ответ дан 30 November 2019 в 11:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: