为什么这个jquery slideToggle代码不起作用?

时间:2010-05-17 13:30:15

标签: jquery slidetoggle

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

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

任何提示都表示赞赏。

谢谢!

function toggleBox(button,box){     if($(box).is(“:hidden”)){         $(box).slideToggle(“slow”,function(){             $(按钮)的.html( “折叠”);         });     }     其他{         $(box).slideToggle(“slow”,function(){             $(按钮)的.html( “扩展”);         });     } }

2 个答案:

答案 0 :(得分:2)

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

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

目前您正在检查它何时启动,但请记住它不是:hidden,直到完成隐藏,所以直到slideUp完成,它仍然是{{1 }):)

答案 1 :(得分:0)

您也可以尝试使用

:not(:animated)