Подождите, пока javascript покажет элемент, чтобы скрыть его потом - PullRequest
0 голосов
/ 07 июля 2011

Привет, у меня есть JQuery js, который делает что-то вроде этого после вызова AJAX:

$element.next().after('<td><b>OPTION SAVED</b></td>');
$element.next().next().hide();
$element.next().next().show('slide', {direction : 'left'}, 1000);

Теперь я хочу вызвать это =>

$element.next().next().next().hide("slow");

Так что я в основномхочу создать элемент динамически, сдвинуть его слева и после того, как он появился, я хочу, чтобы он снова медленно скрывал его.Как мне это сделать?Моя проблема в том, что js-код выполняется даже тогда, когда элемент еще не завершил скольжение (или его создание может быть?), Поэтому, когда я вызываю hide ("slow"), он говорит мне, что я вызвал его на undefined, и ничего не происходит ...

Спасибо

Ответы [ 3 ]

0 голосов
/ 07 июля 2011

Вы должны использовать функцию обратного вызова:

$element.show(duration, easing, callback_function);

Функция обратного вызова будет выполнена после завершения анимации.

Пока!

0 голосов
/ 07 июля 2011

Если я понимаю ваше описание проблемы. Ваша проблема в том, что у вас слишком много next s.

$element.next().next().show('slide', {direction : 'left'}, 1000);

Обратите внимание, что здесь есть 2 next с.

$element.next().next().next().hide("slow");

Тогда вот 3 next с. НЕ тот же элемент. Если вы хотите скрыть тот же элемент, тогда сбросьте next с hide.

Или, что еще лучше, просто зацепите его:

$element.next().next()
   .show('slide', {direction : 'left'}, 1000)
   .hide("slow");
0 голосов
/ 07 июля 2011
$element.next().after('<td><b>OPTION SAVED</b></td>').hide().show('slide', {direction : 'left'}, 1000, function(){$(this).hide();});

Должно работать, цепочка вызовов означает, что after вернет элемент, который вы только что добавили, затем вы покажете его и добавите функцию обратного вызова, чтобы скрыть его снова.

...