2010-05-17 96 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)