Создать искусственную функцию обратного вызова, чтобы включить обратные вызовы для .addclass и .css в Jquery?

#jquery #jquery-ui #jquery-selectors #jquery-callback

#jquery #jquery-пользовательский интерфейс #jquery-селекторы #jquery-обратный вызов

Вопрос:

Я использовал функции slideUp / Down в Jquery для анимации div на моей странице, но она плохо работает на iPhone, поэтому я решил написать эквивалент Webkit для решения проблемы производительности, но вы не можете применить обратный вызов к jQuery .css или .addclass .

У меня есть эта функция:

 $('#collapse').css('height','0');
  

Но мне нужно подделать обратный вызов, чтобы это работало:

 $('#collapse').css('height','0', function() {
//do something after
});
  

Кто-нибудь знает, как это сделать?

Анимация Webkit установлена на 1 секунду.

Комментарии:

1. Почему вы не используете функцию .animate()? api.jquery.com/animate вы можете использовать его обработчик обратного вызова, чтобы делать что угодно после завершения анимации

2. @VAShhh slideUp и slideDown использовать animate внутренне, поэтому я не вижу причин думать, что у них не будет таких же проблем с производительностью.

Ответ №1:

Просто используйте setTimeout ; У jQuery нет способа определить, завершена ли встроенная анимация браузера:

 $('#collapse').css('height', 0);
setTimeout(function() {
    // code will happen after the timeout has completed
}, 1000); // 1 second
  

Недостатком этого является то, что вам приходится устанавливать время для анимации в двух местах.

Комментарии:

1. Другая возможность: syropia.net/journal/css3-transition-callbacks-in-jquery

2. @RenanFranca Какая разница за четыре года! Добавьте это в качестве ответа, и я поддержу его…

Ответ №2:

Другой возможностью является syropia.net/journal/css3-transition-callbacks-in-jquery

=D