jQuery延迟被忽略了

时间:2014-02-10 16:25:38

标签: javascript 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);
});

1 个答案:

答案 0 :(得分: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