javascript - .text() 立即被处理

标签 javascript jquery

我不知道该给什么标题,所以请我道歉,我只是很好奇为什么在下面的代码中,文本在淡出之前就被改变了,即使我把它放在淡入之后。

$('form').submit(function(){
    return false;
});
$('button').on('click',function(){
    $(this).addClass('busy');
    $(this).parent().find('button').attr('disabled',true);
    $(this).parent().find("button:not('.busy')").fadeOut(500);
    $('p').text('Processing..').fadeIn(500).trigger('sfsfsf','wala');
});
$('p').on('sfsfsf',function(e,data){
    //this line below
    $(this).delay(1000).fadeOut(500).text('Complete!');
    $(this).fadeIn(500,function(){
        $(this).delay(500).fadeOut(500);
    });
});

http://jsfiddle.net/v4nwQ/

为什么会这样,我该如何解决?

最佳答案

因为fadeOut()在动画完成之前立即返回; text() 然后立即得到处理。您应该更改 fadeOut() 回调中的文本;

$(this).delay(1000).fadeOut(500, function () {
    $(this).text('Complete!');
});

不相关,但需要注意;您应该查看缓存 $(this) 的结果;你经常这么调用它。

$('p').on('sfsfsf',function(e,data){
    var self = $(this);

    self.delay(1000).fadeOut(500, function () {
        self.text('Complete!');
    });

    self.fadeIn(500,function(){
        self.delay(500).fadeOut(500);
    });
});

关于javascript - .text() 立即被处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8574329/

相关文章:

javascript - 为什么我不能使用 jQuery 从卸载事件处理程序中触发 AJAX 请求?

php - 如何在响应式日历(w3widgets)中使用 'edit'函数

javascript - jQuery ajax async false 修改页面中的html

javascript - 从页面顶部到底部隐藏一个div

javascript - Backbone Js 分部分加载应用程序

javascript - 我可以从 JavaScript 动态更改/设置 Google Maps API key 吗?

javascript - Jquery添加类后如何应用css?

javascript - 使用内置 DOM 方法或 Prototype 从 HTML 字符串创建新的 DOM 元素

Javascript 滚动问题

javascript - 将桌面上的悬停导航栏转换为触摸屏上的可点击导航栏