我想得到一个div的所有孩子,淡出它们,然后在div中插入一些文本。我在fadeOut()中使用了一个回调函数,所以动画很流畅:
var foo = $(this).parents('.foo').eq(0);
foo.children().fadeOut(300,function() {
foo.prepend('some text');
});
问题是fadeOut似乎按顺序在每个子项上触发,而不是一次性触发 - 有三个子节点,因此回调函数为每个子节点触发,导致三个插入文本的实例。我可以将所有的孩子都包裹在一个div中并将其淡化,但是如果可以的话,我想避免添加更多的标记。还有另一种方式吗?
答案 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 :)
}