Допустим, я вызвал $ element.fadeIn (200). Через 100 мс на этой странице что-то происходит, и я хочу прервать это исчезновение и немедленно вызвать fadeOut (). Как я могу это сделать?
Если вы вызываете вызов $ element.fadeIn (200) .fadeOut (0), fadeOut () происходит только после завершения fadeIn ().
Кроме того, Есть ли способ проверить $ element, чтобы определить, работает ли fadeIn () или fadeOut ()? Есть ли в $ element какой-либо член .data (), который изменяется?
AFAIK fadeIn
и fadeOut
работают синхронно, так что нет, я не думаю, что вы можете прервать их во время работы. Вам придется подождать, пока он не будет выполнен.
Если вы вызовете метод stop для элемента, он остановит все анимации. Причина, по которой вызов fadeOut
в вашем примере не вызывается до тех пор, пока fadeIn
, заключается в том, что анимации выполняются в порядке очереди.
Всегда рекомендуется хранить функции, имеющие дело с анимацией и т.д., внутри функции обратного вызова. Вы можете узнать, завершилась ли функция fadeIn(), выполнив свою функцию из своего обратного вызова, например:
$element.fadeIn(200, function(){
//do callback
});
Если это невозможно, вы можете объявить переменную вне функции. Скажем, var elmFadeInRunning = false. Измените его на true прямо перед вызовом fadeIn и измените его обратно на false в обратном вызове fadeIn. Таким образом, вы можете узнать, работает ли он, если elmFadeInRunning == true.