Обратный вызов анимации JQuery вызывается до завершения анимации - PullRequest
5 голосов
/ 02 декабря 2008

Я использую анимацию slideDown, чтобы показать некоторые элементы div в новой добавленной строке таблицы:

$("div", newRow).slideDown(10000, UpdateHours(response.d.Hours));

однако функция UpdateHours () вызывается задолго до завершения анимации div. Это вызывает у меня проблему, потому что обновленные часы покрываются скользящими элементами.

Я сделал слайд очень медленным, чтобы лучше проиллюстрировать проблему.

Ответы [ 2 ]

34 голосов
/ 02 декабря 2008

Я думаю, что он пытается передать результат вызова UpdateHours (response.d.Hours) как функцию обратного вызова, что объясняет, почему он вызывается так скоро. Одним из решений было бы создание анонимной функции, которая вызывает UpdateHours.

$("div", newRow).slideDown(10000, function () { UpdateHours(response.d.Hours) });

На сайте jQuery есть демонстрационная программа для вызова функции slideDown. http://docs.jquery.com/Effects/slideDown

7 голосов
/ 02 декабря 2008

Я думаю, вы хотите это:

$("div", newRow).slideDown(10000, function() { UpdateHours(response.d.Hours); });

Это создает анонимную функцию, которая будет вызываться как обратный вызов - вы устанавливаете обратный вызов равным UpdateHours

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...