jquery按钮内容更改并再次返回

Posted

技术标签:

【中文标题】jquery按钮内容更改并再次返回【英文标题】:jquery button content change and back again 【发布时间】:2014-03-23 20:00:28 【问题描述】:

我试图在按钮按下时获得一个简单的反馈,以快速淡出按钮,更改其类和内容,淡入然后反向返回其原始状态。

这是我认为相当简单的代码。

$('#event1-btn-451').fadeOut(200).toggleClass('btn-primary btn-success').html('Success!').fadeIn(200);
$('#event1-btn-451').delay(2000).fadeOut(200).toggleClass('btn-success btn-primary').html('Add Event').fadeIn(200);

第一行本身工作正常,但如果我包含第二行,它会淡出,淡入具有原始颜色的相同“添加事件”按钮,然后在 2 秒延迟后再次执行完全相同的操作。

JSFIDDLE

第一次在这里发帖,当然,我已经用这个回答了很多答案了!

【问题讨论】:

【参考方案1】:

这种动画必须是链式的,像这样:

jsFiddle

$('#event1-btn-451').click(function () 
    $(this).fadeOut(200, function()
        $(this).toggleClass('btn-primary btn-success')
            .html('Success!')
            .fadeIn(200) // No need to chain as there is a delay then
            .delay(2000)
            .fadeOut(200, function()
                $(this).toggleClass('btn-success btn-primary')
                    .html('Add Event')
                    .fadeIn(200);
            )
        )
);

【讨论】:

感谢@toni-almeida,这太完美了。现在我理解了淡入淡出的链接。【参考方案2】:

我会为此使用 jQuery animate 方法。此处已介绍。

Change text (html) with .animate

【讨论】:

【参考方案3】:

请试试这个:

$('#event1-btn-451').click(function () 
    var _this = $(this);
    _this.fadeOut(200, function () 
        _this.toggleClass('btn-primary btn-success').html('Success!').fadeIn(200).delay(2000).fadeOut(200, function () 
            console.log('c');
            _this.toggleClass('btn-success btn-primary').html('Add Event').fadeIn(200);
        )
    );
);

使用 callback function 的 jquery fadeOut()

【讨论】:

非常类似于 Toni 对所需链接的响应,但我想知道 console.log('c) 是干什么用的?

以上是关于jquery按钮内容更改并再次返回的主要内容,如果未能解决你的问题,请参考以下文章

使用jQuery完全删除和替换Div内容

如何专注于打开和模态的触发元素,一旦保存内容,整个页面就会被销毁并再次呈现

将标题设置为按钮并在单击两次时再次返回第一个标题

Jquery Mobile 持久页脚 - 更改所有页面上的内容

使用 JQuery 仅显示一个元素

如何为后退按钮保留 Web 表单内容