2

我想做一个.fadeIn()链接到 this 的动画.after(),但这似乎不是这样做的方式。有什么建议么?

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

3 回答 3

14

你应该使用.insertAfter();

$(str)
  .hide()
  .insertAfter($(clicked_item).parent().parent().parent())
  .fadeIn("slow");
于 2011-12-22T00:17:10.020 回答
3

除了@EmreErkan 的回答,请尝试最小化您的代码。使用parents()并选择要在其后添加文本的 div 的idclass,而不是使用parent()三次:

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

编辑:正如评论中所指出的,最好使用closest()而不是parents()针对单个元素,这parents()通常意味着使用选择器。

于 2011-12-22T00:27:12.527 回答
2

$.fn.after() 将返回运行它的元素(在本例中为 $(clicked_item).parent().parent().parent())。如果那是您想要淡入淡出的元素,那么我认为没有问题。如果你想淡入()'str'元素,我建议这样做:

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

如果更改 HTML,则无需更改 .parent() 调用次数即可获取元素的特定父级的更稳定方法是将 .parents() 与标记名称一起使用:

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

将“p”更改为您想要到达的元素。

编辑:哎呀,太晚了。

于 2011-12-22T00:28:06.147 回答