6

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

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

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

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

那么当用户单击带有 id 的按钮时,如何阻止它不淡出我的字符串'my_button'?任何帮助深表感谢

4

2 回答 2

5

正如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);
于 2012-12-12T14:33:50.303 回答
1

如果您查看文档,显然不是。建议setTimeout可以替代您需要的东西。

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

于 2012-12-12T14:34:25.923 回答