2014-02-10 87 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