Ошибка обратного вызова анимированной функции jQuery

0

У меня есть следующий код для разворота div:

var current = $('.s_text:visible');
current.animate({
  right: 1014,
  opacity:0,
},{queue: false, duration:2000}, function() {
  current.hide();
});

по какой-то причине функция обратного вызова не работает! но! Если я удалю опцию {queue:false, duration:2000} и замените ее на ,2000,function().... функция обратного вызова работает.

current.animate({
      right: 1014,
      opacity:0,
    },2000, function() { // this one works...
      current.hide();
    });

Почему это?

  • 0
    Вы используете старую версию jquery. Попробуйте использовать эту версию <script src = " code.jquery.com/jquery-1.9.1.js" ></ script > это нормально для меня
  • 0
    @jailalawat Я использую jquery 1.10.1
Показать ещё 2 комментария
Теги:

4 ответа

3
Лучший ответ

Если вы используете второй параметр метода .animate в качестве объекта параметров, вы не можете отправить обратный вызов в качестве третьего параметра.

В вашем случае вам необходимо использовать полный параметр объекта options.

var current = $('.s_text:visible');
current.animate({
  right: 1014,
  opacity:0,
},{queue: false, duration:2000, complete:function() {
  current.hide();
}});

два дополнительных набора параметров, которые этот метод принимает:

.animate( properties [, duration ] [, easing ] [, complete ] )

или

.animate( properties, options )

но не сразу.

источник: http://api.jquery.com/animate/

  • 1
    Спасибо! хорошо объяснил!
1

Анимации:

.animate( properties, options )

Найти ссылку здесь: http://api.jquery.com/animate/

var current = $('.s_text:visible');
current.animate(
  {
    right    : 1014,
    opacity  :0
  },{
    queue   : false, 
    duration:2000,
    complete: function() {
         current.hide();
    }
 });
  • 1
    Почему ОП должен попробовать это? Пожалуйста, объясните проблему и почему ваш ответ решает ее.
  • 0
    Понял! Спасибо! Теперь я понимаю, как я должен был сделать функцию обратного вызова.
Показать ещё 2 комментария
1

Поскольку .animate() имеет только два объявления:

  1. .animate (свойства [, duration] [, easing] [, complete])
  2. .animate (свойства, параметры)

нет для вашего использования, вы можете увидеть больше о .animate() здесь: http://api.jquery.com/animate/

1

Если вы хотите использовать options (очередь и продолжительность), у вас не может быть такой функции обратного вызова; вы должны включить функцию обратного вызова в options (см. документацию):

var current = $('.s_text:visible');
current.animate({
    right: 1014,
    opacity:0
},{
    queue: false, 
    duration:2000,
    complete: function() {
        current.hide();
    }
);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню