jQuery fadeIn (), следующий после () - PullRequest
2 голосов
/ 22 декабря 2011

Я искал анимацию .fadeIn(), прикованную к этому .after(), но, похоже, это не тот способ.Есть предложения?

$(clicked_item).parent().parent().parent().after(str).fadeIn("slow");

Ответы [ 3 ]

14 голосов
/ 22 декабря 2011

Вы должны использовать .insertAfter();

$(str)
  .hide()
  .insertAfter($(clicked_item).parent().parent().parent())
  .fadeIn("slow");
3 голосов
/ 22 декабря 2011

В дополнение к ответу @ EmreErkan, попробуйте минимизировать ваш код.Используйте parents() и выберите id или class элемента div, к которому вы хотите добавить текст, вместо трехкратного использования parent():

$(str)
    .hide()
    .insertAfter($(clicked_item).parents(selector))
    .fadeIn("slow");

РЕДАКТИРОВАТЬ: Как указано в комментариях, лучше использовать closest() вместо parents(), если вы нацеливаетесь на один элемент, что обычно подразумевает использование parents() с селектором.

2 голосов
/ 22 декабря 2011

$. Fn.after () вернет элемент, на котором он был запущен (в этом случае $ (clicked_item) .parent (). Parent (). Parent ()).Если это элемент, который вы хотите исчезнуть, то я не вижу проблем.Если вы хотите вместо fadeIn () использовать элемент 'str', я бы предложил сделать следующее:

$(str).insertAfter($(clicked_item).parent().parent().parent()).fadeIn('slow');

Более стабильный способ получения определенного родителя элемента, который не требует измененияколичество вызовов .parent (), если вы измените HTML, должно использовать .parents () вместе с именем тега:

$(clicked_item).parents('p').eq(0)

Измените 'p' на элемент, которого вы хотите достичь.

Правка: слишком поздно.

...