【问题标题】:How to break jQuery.delay in Javascript? [duplicate]如何在 Javascript 中打破 jQuery.delay? [复制]
【发布时间】:2012-12-12 14:30:45
【问题描述】:

可能重复:
.delay() and .setTimeout()

有没有办法在这里打破和停止 javascript 延迟?

我希望用户在单击按钮时会停止此延迟,并且不会像此处那样执行预期的代码

  $(#my_id).html('write my string here').delay(12000).fadeOut(1000) ;

那么,当用户单击 ID 为 'my_button' 的按钮时,如何停止这种情况以不淡出我的字符串? 非常感谢任何帮助

【问题讨论】:

标签: javascript jquery html


【解决方案1】:

jQuery.delay 的文档明确指出,您无法取消使用该功能配置的延迟。

[...] 因为它是有限的——例如,它不提供取消延迟的方法——.delay() 不能替代 JavaScript 的原生 setTimeout 函数,这可能更适合某些情况用例 [...]

使用常规的 javascript setTimeout 来实现可轻松取消的操作。例如,您的代码可以转换为:

$("#my_id").html('write my string here');
var myTimeoutId = setTimeout(function() {
    $("#my_id").fadeOut(1000);
}, 12000);

// to somewhere else cancel that timeout use clearTimeout function like so:
clearTimeout(myTimeoutId);

【讨论】:

  • 延迟由 setTimeout 函数处理。 fadeOut 将在 12000 毫秒后发出,就像使用 jQuery.delay 函数时一样。
  • ok 似乎 settimeout 在取消时会起作用。谢谢
【解决方案2】:

显然不是,如果你 check out the documention。建议setTimeout 可以替代您所需要的。

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

【讨论】:

    猜你喜欢
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 2015-04-09
    • 2022-12-15
    • 2010-10-07
    相关资源
    最近更新 更多