Javascript 等待一段时间后执行的排队操作(非效果)。
我想知道的是,是否有一种很好的方法可以将jQuery函数排队,以便在设定的时间后执行。这不会暂停其他函数的执行,只是链中的后续函数。也许我设想的一个例子可以说明:Javascript 等待一段时间后执行的排队操作(非效果)。,javascript,jquery,Javascript,Jquery,我想知道的是,是否有一种很好的方法可以将jQuery函数排队,以便在设定的时间后执行。这不会暂停其他函数的执行,只是链中的后续函数。也许我设想的一个例子可以说明: $('#alert') .show() .wait(5000) // <-- this bit .hide() ; $(“#警报”) .show() .等等(5000)/你不能这么做,而且你可能不想这么做。虽然它看起来确实很漂亮,但是Javascript中没有任何机制允许您在不循环“等待”直到时间
$('#alert')
.show()
.wait(5000) // <-- this bit
.hide()
;
$(“#警报”)
.show()
.等等(5000)/你不能这么做,而且你可能不想这么做。虽然它看起来确实很漂亮,但是Javascript中没有任何机制允许您在不循环“等待”直到时间过去的情况下执行该操作。您当然可以这样做,但您可能会严重降低浏览器性能,如果您的超时时间超过几秒钟,浏览器将向用户显示一条警告,表明您的javascript似乎被卡住了
正确的方法是超时:
var el = $('#alert');
el.show()
setTimeout(function() { el.hide() }, 5000);
您的另一个选择是扩展jquery,为您想要延迟的操作添加效果:
jQuery.fn.extend({
delayedHide: function(time) {
var self = this;
setTimeout(function() { self.hide(); }, time);
}
});
$('#alert')
.show()
.delayedHide(5000)
;
您还可以使用类似于setTimeout的方法扩展jquery:
jQuery.fn.extend({
delayThis: function(fn, time, args) {
var self = this;
setTimeout(function() { jQuery.fn[fn].apply(self, args); }, time);
}
});
$('#alert')
.show()
.delayThis('hide', 5000)
;
或使用args调用数组中的pass参数:
$('#alert')
.show()
.delayThis('css', 5000, [ 'display', 'none' ])
;
它正是您所需要的:
$('#element').fadeOut({
speed: 'fast',
preDelay: 5000
});
嗨,普雷斯塔尔,谢谢你的评论-我对这个问题进行了轻微的编辑,以澄清我不希望它在这么长的时间内“挂起”浏览器。