javascript - 加号不会变回来

标签 javascript jquery html

我有一个简单的切换脚本,如下所示:http://jsfiddle.net/M4pZc/

当页面最初显示时,会显示 +,切换时会更改为 -。但再次单击时,不会变回 +

为什么这不起作用?我所做的只是 if/else(如果元素可见),因此当 #hidden div 不可见时,它应该改回 +。

这是 Jquery:

$(function(){
   $("#showMore").click(function(){
      $("#hiddenMore").slideToggle(200);
      $("#hiddenMore").is(":visible") ? $("#showMore").text("More -") : $("#showMore").text("More +");
   });
});

最佳答案

需要将其放在slideToggle的回调下,因为不能保证动画完成后执行元素可见检查:

 $("#showMore").click(function(){
      $("#hiddenMore").slideToggle(200, function(){
         $(this).is(":visible") ? $("#showMore").text("More -") : $("#showMore").text("More +");
      });

   });

Fiddle

您也可以尝试这种方式,使用文本的函数回调在动画完成时交换文本:

$(function () {
    $("#showMore").click(function () {
        var $this = $(this);
        $("#hiddenMore").slideToggle(200, function(){
            $this.text(function (_, text) {
               return text == "More -" ? "More +" : "More -";
            });
        });
    });
});

Fiddle

关于javascript - 加号不会变回来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17242821/

相关文章:

javascript - 使用 javascript/jquery 选择仅跟随某些元素的文本

javascript - jquery 等高需要与浏览器调整大小一起使用

javascript - 聚合物2.0 : where should I place business logic?

javascript - 播放按钮动画

javascript - 在javascript中更改CSS动画

c# - 通过 Jquery 的 ascx anchor 标记打开 Aspx 时不触发 PageLoad 事件

javascript - 如何从 selenium-java 中的 javascript 弹出日历中选择日期

javascript - React Native - 不变违规

javascript - 如果存在另一个类,则循环遍历 div 并切换类

html - 具有动态高度的正方形 CSS 网格?