2010-05-17 65 views
0

我想改變一個展開/摺疊按鈕的按鈕文本。基本上,用戶單擊「摺疊」,然後執行slideToggle,並在完成滑動切換時,將按鈕文本更改爲「展開」,反之亦然。爲什麼jQuery的slideToggle代碼不起作用?

下面的代碼很好用,但是如果你快速點擊展開/摺疊按鈕,它會放鬆心情,並在展開時顯示「展開」或摺疊時顯示「摺疊」。

任何提示將不勝感激。

謝謝!

功能toggleBox(按鈕,箱){ 如果($(盒)。是( 「:隱藏」)){$ (盒).slideToggle( 「慢」,函數(){$ (按鈕) .html(「Collapse」); }); (「slow」,function(){ } else {(box).slideToggle(012) }}

回答

2

在你的情況,這將會是更安全的做檢查,你要設置的文字,後的動畫完成,這樣:

function toggleBox(button, box){ 
    $(box).slideToggle("slow", function(){ 
    $(button).html($(this).is(":hidden") ? "Expand" : "Collapse"); 
    }); 
} 

目前你正在檢查啓動時,但要記住這不是:hidden,直到它完成隱藏,所以未直到slideUp完成的時刻,它仍然是:visible :)

+0

謝謝大家。但尼克,你的解決方案完美無缺!比我的更優雅。謝謝! – cbmeeks 2010-05-19 11:43:57

0

您也可以嘗試使用

:not(:animated) 
相關問題