为什么这个jquery slideToggle代码不起作用?
我正在尝试更改展开/折叠按钮的按钮文本。 基本上,用户单击“折叠”并执行slideToggle,当完成slideToggle时,我将按钮文本更改为“Expand”,反之亦然。
下面的代码非常有用,但是如果你快速单击展开/折叠按钮,它就会失去理智并在已经展开时显示“展开”,或者当它已经折叠时显示“折叠”。
任何提示都表示赞赏。
谢谢!
function toggleBox(button,box){if($(box).is(“:hidden”)){$(box).slideToggle(“slow”,function(){$(button).html(“Collapse”) ;}); } else {$(box).slideToggle(“slow”,function(){$(button).html(“Expand”);}); }}
在您的情况下,在动画结束后 , 在设置文本时进行检查会更安全,如下所示:
function toggleBox( button, box ){ $(box).slideToggle("slow", function(){ $(button).html($(this).is(":hidden") ? "Expand" : "Collapse"); }); }
目前你正在检查它何时开始,但记住它不是:hidden
直到它完成隐藏,所以直到slideUp
完成时,它仍然是:visible
🙂
您也可以尝试使用
:not(:animated)