2014-02-10 88 views
0

我有下面的代碼正在運行,但由於某種原因,無論我在哪裏放置延遲線執行立即。jQuery延遲被忽略

任何幫助將不勝感激。

$('#team_a_grid, #team_b_grid').on("click", "td.clickable", function(){ 
    var dot_or_cross ='<span>Dot</span>' 
    $(this).delay(3000).removeClass().html(dot_or_cross); 
}); 
+0

的可能重複的[JQUERY各添加類延遲其間](http://stackoverflow.com/questions/12680803/jquery-each-add-class-with-delay-inbetween) – Alnitak

回答

3

使用.setTimeout()

$('#team_a_grid, #team_b_grid').on("click", "td.clickable", function() { 
    var dot_or_cross = '<span>Dot</span>' 
    var $this=$(this); 
    setTimeout(function() { 
     $this.removeClass().html(dot_or_cross); 
    }, 3000); 
}); 

作爲評價

的.delay()方法是最適合排隊jQuery效果之間延遲指出。因爲它是有限的 - 例如,它不提供取消延遲的方法.delay()不是JavaScript本地setTimeout函數的替代品,這對於某些用例可能更合適。

Doc reference

+1

'這是錯的 – SLaks

+1

是的,因爲'.delay'只用於動畫。 –

+0

@SLaks修復了,謝謝 – Anton