我試圖淡出section#secondary
的內容,一旦內容淡出,父級(section#secondary
)應該在滑塊動畫中爲「關閉」設置動畫。如何從.fadeOut效果回調中使用.animate的持續時間設置?
所有這些工作,但持續時間不是,我不明白爲什麼。
這裏是我的代碼:
HTML
<section id="secondary">
<a href="#" class="slide_button">«</a> <!-- slide in/back button -->
<article>
<h1>photos</h1>
<div class="album_nav"><a href="#">photo 1 of 6</a> | <a href="#">create an album</a></div>
<div class="bar">
<p class="section_title">current image title</p>
</div>
<section class="image">
<div class="links">
<a class="_back album_link" href="#">« from the album: james new toy</a>
<nav>
<a href="#" class="_back small_button">back</a>
<a href="#" class="_next small_button">next</a>
</nav>
</div>
<img src="http://localhost/~jannis/3781_doggie_wonderland/www/preview/static/images/sample-image-enlarged.jpg" width="418" height="280" alt="" />
</section>
</article>
<footer>
<embed src="http://localhost/~jannis/3781_doggie_wonderland/www/preview/static/flash/secondary-footer.swf" wmode="transparent" width="495" height="115" type="application/x-shockwave-flash" />
</footer>
</section> <!-- close secondary -->
jQuery的
// =============================
// = Close button (slide away) =
// =============================
$('a.slide_button').click(function() {
$(this).closest('section#secondary').children('*').fadeOut('slow', function() {
$('section#secondary').animate({'width':'0'}, 3000);
});
});
由於section#secondary
的內容是可變的,我用的是*
選擇。
會發生什麼事是,fadeOut
使用適當slow
速度,但一旦回調火災(一旦內容淡出)的section#secondary
動畫播放至width: 0
幾毫秒之內,而不是3000毫秒(3秒)我將動畫持續時間設置爲。
任何想法,將不勝感激。
PS:我不能在此處發佈示例,但由於這更多是jQuery理論的問題,所以我不認爲這裏需要示例。 糾正我,如果我錯了..
每一級子觸發一次,因此3次這不是我僅與該代碼看到的行爲:http://jsfiddle.net/ eKeQ2 /外部/附加內容必須在您的實際頁面上進行。應該檢查'$('section#secondary:not(:animated)')',因爲你正在爲每個褪色的孩子開始動畫而不是一次。 – 2010-05-11 10:32:46
我更新了我的答案。我猜這是因爲你沒有爲'#secondary'設置任何大小的屬性,所以當它的內容被刪除時,它會自動崩潰。我的新答案(如下)在點擊時靜態設置其大小,並在動畫之前。 – user113716 2010-05-11 11:41:54