2013-01-21 75 views
15

在我的Rails应用程序中,当用户点击保存按钮时发送Ajax请求,当它发送请求时,我可以返回一些jQuery。jQuery AddClass然后删除类

我想要做的是添加一个类(保存),有一个延迟,然后删除类。

所以,我说这一点:

$('.button').addClass('saving').delay(2000).removeClass('saving'); 

出于某种原因,它不工作。我究竟做错了什么?

回答

27

.delay()实际上是动画。

使用setTimeout()

$('.button').addClass('saving'); 

setTimeout(function() { 
    $('.button').removeClass('saving'); 
}, 2000); 
+1

事实上,[setTimeout的是要走的路(http://jsfiddle.net/QN66w/) –

+0

啊,我不知道'.delay()'是为动画。它的工作,谢谢! – user1975031

1

试试这个可能:

$('.button').addClass('saving').delay(2000, function() { 
    $(this).removeClass('saving') 
}); 
+0

关闭!你需要'.delay(2000).queue(function(){});'在@ undefined的答案中,它将起作用 –

9

delay只与动画相关的方法的工作原理,你可以使用queue方法:

$('.button').addClass('saving').delay(2000).queue(function(next){ 
    $(this).removeClass('saving'); 
    next(); 
}); 

http://jsfiddle.net/Rp6Xw/44/

+0

我试过'.queue()',但它在我的应用程序中不起作用。 – user1975031

+0

我正在使用1.8.3。 – user1975031

+0

@ user1975031好的,幸运的是'setTimeout'适合你。可能的原因是我在代码中使用了'div'作为选择器,并且只是复制/粘贴它。 – undefined

2

如果有人需要多个添加/删除类,.dequeue();也被要求正常运作。

$('.button').addClass('saving').delay(2000).queue(function(){ 
    $(this).removeClass('saving'); 
    $(this).dequeue(); 
});