0

我正在尝试更改展开/折叠按钮的按钮文本。基本上,用户单击“折叠”,然后我执行 slideToggle,当 slideToggle 完成时,我将按钮文本更改为“展开”,反之亦然。

以下代码效果很好,但是如果您快速单击展开/折叠按钮,它会失去理智并在已经展开时显示“展开”或在已经折叠时显示“折叠”。

任何提示表示赞赏。

谢谢!

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

4

2 回答 2

2

在您的情况下,在动画完成后,在设置文本时进行检查会更安全,如下所示:

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

目前您正在检查它何时开始,但请记住它:hidden直到它完成隐藏,所以直到slideUp完成的那一刻,它仍然是:visible:)

于 2010-05-17T14:06:54.667 回答
0

您也可以尝试使用

:not(:animated)
于 2010-05-17T13:36:09.017 回答