2011-04-20 86 views
3

我想獲得一個div的所有孩子,淡出他們,然後在div中插入一些文本。我使用的淡出(回調函數),所以動畫流暢:jquery問題.children()和.fadeOut()

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

問題是,淡出似乎是射擊序列中的孩子們的每一個,而不是一次全部 - 有三個孩子,所以回調函數觸發它們中的每一個,導致插入文本的三個實例。我可以把所有的孩子都包裝在一個div中,然後淡出,但是如果可以的話,我想避免增加更多的標記。有另一種方法嗎?

回答

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) 
}); 
+0

作品完美,感謝 – herpderp 2011-04-20 05:26:15

1

刪除children()並直接撥打foo

另外,在回調...

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

jsFiddle