我不能得到.delay
方法jQuery中工作:jQuery的:等待/延遲1秒而不執行代碼
$.delay(3000); // not working
$(queue).delay(3000); // not working
我使用一個while循環等待直到不受控制的改變值是大於或等於另一個,我找不到任何方法來拖延執行X秒。
我不能得到.delay
方法jQuery中工作:jQuery的:等待/延遲1秒而不執行代碼
$.delay(3000); // not working
$(queue).delay(3000); // not working
我使用一個while循環等待直到不受控制的改變值是大於或等於另一個,我找不到任何方法來拖延執行X秒。
$ .delay用來延遲動畫在隊列中,不停止執行。
而不是使用一個while循環,你需要遞歸調用執行檢查的方法每秒使用setTimeout
:
var check = function(){
if(condition){
// run when condition is met
}
else {
setTimeout(check, 1000); // check again in a second
}
}
check();
的JavaScript setTimeout
是一個很好的解決方案:
function funcx()
{
// your code here
// break out here if needed
setTimeout(funcx, 3000);
}
funcx();
的delay
jQuery中的函數主要用於延遲jQuery動畫隊列中的動畫。
delay()
不制止碼流,然後重新運行它。在JavaScript中沒有切實可行的方法。一切都必須用回調函數來完成,如其他人提到的setTimeout
。
jQuery的delay()
的目的是在執行前製作動畫隊列等待。因此,例如$(element).delay(3000).fadeIn(250);
將使該元素在3秒後淡入。
jQuery的delay
函數的含義與作用和效果隊列中使用,請參閱delay
docs和其中的例子:
$('#foo').slideUp(300).delay(800).fadeIn(400);
如果你想觀察更改的變量,你可以做類似
(function() {
var observerInterval = setInterval(function() {
if (/* check for changes here */) {
clearInterval(observerInterval);
// do something here
}
}, 1000);
})();
setInterval有第二個必需參數,時間以毫秒爲單位) – 2015-10-12 07:26:31
謝謝@ sara.potyscki,修正了。 – 2015-10-12 09:11:44
@JulianD。感謝您的建議。我在搜索解決方案時登陸這個問題。這正是我爲我的項目所需要的。 – 2017-09-22 14:57:36
JavaScript是一種異步編程語言,所以你不能停止執行的時間;您可以[僞]停止執行的唯一方法是使用setTimeout(),它不是延遲,而是「延遲的函數回調」。
你也可以拖延一些操作是這樣的:
setTimeout(function(){
// Something you want delayed.
}, 5000); // How long do you want the delay to be (in milliseconds)?
這完美的作品! – Kaos 2012-10-24 14:55:02
僅供參考,這不會中斷執行流程,所以如果您需要「停止一切」幾秒鐘,您將需要類似Niessner發佈的內容。 – 2015-01-10 00:48:05
是的......它是對函數的回調,並不會阻塞。感謝您的答案,它解決了我的問題。 – 2015-05-02 20:46:35
只有JavaScript將不jQuery的
<!DOCTYPE html>
<html>
<head>
<script>
function sleep(miliseconds) {
var currentTime = new Date().getTime();
while (currentTime + miliseconds >= new Date().getTime()) {
}
}
function hello() {
sleep(5000);
alert('Hello');
}
function hi() {
sleep(10000);
alert('Hi');
}
</script>
</head>
<body>
<a href="#" onclick="hello();">Say me hello after 5 seconds </a>
<br>
<a href="#" onclick="hi();">Say me hi after 10 seconds </a>
</body>
</html>
循環等待javascript是一個壞主意!當循環運行時,所有javascript功能將**停止**。這將會產生意想不到的副作用。使用setTimeout()之類的非阻塞函數要好得多。 – 2016-07-12 20:26:12
工作,嘗試在回調 – theshadowmonkey 2012-01-17 14:31:03
您使用的是什麼版本的jQuery使用的setTimeout?是不是什麼延遲功能是專爲 – L7ColWinters 2012-01-17 14:31:09
,它是專爲排隊jQuery的事件之間的使用(如淡入()。延遲()。節目())。你需要setTimeOut函數。 – JoJa 2012-01-17 14:35:25