2013-01-21 74 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(); 
});