2016-01-09 4 views
1

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

Обычный способ создания fadeIn анимации:

$("#element").fadeIn(function() { 
    // do something 
}); 

По JQuery 1.6:

$("#element").fadeIn().promise().done(function() { 
    // do something 
}); 

Из того, что я могу понять, прочитав документацию:

  • В В первом примере обратный вызов вызывается один раз для каждого элемента.

  • Во втором примере doneCallback вызывается, когда все соответствующие элементы завершили анимацию.

Итак, предположим, что ваша функция одинакова для всех элементов, всегда предпочтительнее использовать код второго примера?

+0

FYI, есть также 'when' [метод] (https://api.jquery.com/jquery.when/), который работает в качестве второго примера: $ .when ($ ("#element") .fadeIn()). done (function() {}); – CronosS

ответ

1

Итак, предположим, что ваша функция одинакова для всех ваших элементов, всегда предпочтительнее использовать код второго примера?

Нет, они ведут себя по-другому. Ваш выбор зависит от вашего желаемого поведения.

  • В первом случае обратный вызов вызывается несколько раз. Один на каждый элемент сразу после того, как элемент исчез в.
  • Во втором случае обратный вызов вызывается только один раз.
+0

Да, см. Мое описание. Я не сказал ничего другого. – gmuser

+0

@gmuser: вы спрашивали: «Всегда предпочтительнее использовать код второго примера?». Мой ответ No –

+0

Хорошо, понял. Поэтому я верю, что если, например, вы хотите «fadeIn» элементы, а затем «fadeOut», все они, второй метод - лучший выбор. – gmuser