可能重复:
.delay() 和 .setTimeout()
有没有办法在这里打破和停止 javascript 延迟?
我希望用户单击按钮时,此延迟将停止并且不会像此处那样执行预期的代码
$(#my_id).html('write my string here').delay(12000).fadeOut(1000) ;
那么当用户单击带有 id 的按钮时,如何阻止它不淡出我的字符串'my_button'
?任何帮助深表感谢
可能重复:
.delay() 和 .setTimeout()
有没有办法在这里打破和停止 javascript 延迟?
我希望用户单击按钮时,此延迟将停止并且不会像此处那样执行预期的代码
$(#my_id).html('write my string here').delay(12000).fadeOut(1000) ;
那么当用户单击带有 id 的按钮时,如何阻止它不淡出我的字符串'my_button'
?任何帮助深表感谢
正如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
可以替代您需要的东西。
.delay() 方法最适合在排队的 jQuery 效果之间进行延迟。因为它是有限的——例如,它不提供取消延迟的方法——.delay() 不能替代 JavaScript 的本机 setTimeout 函数,这可能更适合某些用例。