javascript - 淡入后自动重复淡出

标签 javascript jquery

$("document").ready(function(){
    $("button.art").click(function() {
        $(".patr").fadeIn("slow");
        $("button.art").text("Hide them all").promise().done(function(){

        $("button.art").click(function() {
        $(".patr").fadeOut().promise(); 
            $("button.art").text("Show them all").promise();
        })  })   })  }); 

我在“patr”类中有几个方 block 。 当我按下按钮时,我想显示它们并将文本从“全部显示”更改为“全部隐藏”。

当我再次按下按钮时,我想做相反的事情,隐藏方 block 并将文本从“全部隐藏”更改为“全部显示”,以便可以一次又一次地完成。

问题是第一次显示-隐藏cicle后,fadeOut功能自动启动。

我做错了什么? 这是我的 jsfiddle 链接 http://jsfiddle.net/#&togetherjs=gndOED4Qiq

编辑: 另一个更简单和正确的版本:

    $("document").ready(function () {
    $("button.art").click(function () {
        $(".patr").fadeToggle();
        if ($(this).hasClass('show')) {
            $(this).text('Hide Them All');
            $(this).removeClass('show').addClass('hide');
        }
    })
});

最佳答案

您可以使用 .fadeToggle() 来缩短代码 在淡入和淡出动画之间切换以及使用三元运算符设置按钮的文本:

$("document").ready(function () {
    $("button.art").click(function () {
        $(".patr").fadeToggle("slow");
        var text = $(this).text();
        $(this).text(text == "Hide them all" ? "Show them all" : "Hide them all");
    })
});

<强> Fiddle Demo

关于javascript - 淡入后自动重复淡出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22574843/

相关文章:

javascript - devexpress 回调结果语法

javascript - Jquery .show() 和 .hide() 甚至 .css( {"display":"none"});不在火狐浏览器中工作?

javascript - 人们可以查看您的 js 文件通常安全吗

javascript - 为什么这个字符串会变成完整的元素选择器?

javascript - 使用 Javascript 将焦点设置在选择元素上会将第一个项目滚动到 View 之外

javascript - 在揭示模块模式中返回 jQuery Promise

javascript - 如何用多个id简化JS

javascript - 将变量传递给 javascript 函数

javascript,对象,将函数作为参数传递 - Angular ,jquery 概念基本误解

javascript - Angular UI 网格 - 根据过滤器选择所有内容