【问题标题】:Why does this jquery slideToggle code not work?为什么这个 jquery slideToggle 代码不起作用?
【发布时间】:2023-03-26 05:39:01
【问题描述】:

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

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

感谢任何提示。

谢谢!

函数切换框(按钮,框){ if($(box).is(":hidden")) { $(box).slideToggle("slow", function(){ $(button).html("折叠"); }); } 别的 { $(box).slideToggle("slow", function(){ $(button).html("展开"); }); } }

【问题讨论】:

    标签: jquery slidetoggle


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢大家。但是尼克,您的解决方案非常有效!比我的优雅多了。谢谢!
    【解决方案2】:

    你也可以试试

    :not(:animated)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-05
      • 2012-02-22
      相关资源
      最近更新 更多