【问题标题】:jQuery delay being ignoredjQuery延迟被忽略
【发布时间】:2014-02-11 00:29:58
【问题描述】:

我正在运行以下代码,但出于某种原因,无论我将延迟放置在何处,该行都会立即执行。

任何帮助将不胜感激。

$('#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);
});

【问题讨论】:

标签: javascript jquery


【解决方案1】:

使用 .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);
});

正如 cmets 中指出的那样

.delay() 方法最适合在排队的 jQuery 效果之间进行延迟。因为它是有限的——例如,它不提供取消延迟的方法——.delay() 不能替代 JavaScript 的原生 setTimeout 函数,这可能更适合某些用例。

Doc reference

【讨论】:

  • 是的,因为.delay 仅用于动画。
  • 你的意思是var $this = $(this); ;-)
  • 相关文档:api.jquery.com/delay:“.delay() 方法最适合在队列中的 jQuery 效果之间进行延迟。因为它是有限的——例如,它不提供取消延迟——.delay() 不能替代 JavaScript 的原生 setTimeout 函数,它可能更适合某些用例。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-15
  • 1970-01-01
  • 2020-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多