.children()和.fadeOut()的jquery问题

时间:2011-04-20 05:02:07

标签: jquery

我想得到一个div的所有孩子,淡出它们,然后在div中插入一些文本。我在fadeOut()中使用了一个回调函数,所以动画很流畅:

var foo = $(this).parents('.foo').eq(0);
foo.children().fadeOut(300,function() {
  foo.prepend('some text');
});

问题是fadeOut似乎按顺序在每个子项上触发,而不是一次性触发 - 有三个子节点,因此回调函数为每个子节点触发,导致三个插入文本的实例。我可以将所有的孩子都包裹在一个div中并将其淡化,但是如果可以的话,我想避免添加更多的标记。还有另一种方式吗?

2 个答案:

答案 0 :(得分:2)

试试这段代码:

var foo = $(this).parents('.foo').eq(0);
foo.fadeOut(300,function() {//fade out foo
  foo
     .children().hide().end()//set display none to foo's children
     .prepend('some text').show();//prepend text to foo and show it (but children have display none)
});

答案 1 :(得分:1)

删除children()并直接在foo上调用。

或者,在回调中......

function() {
   if ($(this).siblings(':animated').length) {
      return;
   }
   // What you need to do once only :)
}

jsFiddle