155

.delayjQuery でメソッドを動作させることができません:

$.delay(3000); // not working
$(queue).delay(3000); // not working

制御されていない変化する値が別の値以上になるまで待機する while ループを使用していますが、X 秒間実行を停止する方法が見つかりません。

4

10 に答える 10

257

この方法で一部の操作を遅らせることもできます。

setTimeout(function (){
  
  // Something you want delayed.
            
}, 5000); // How long you want the delay to be, measured in milliseconds.
于 2012-07-21T01:31:01.490 に答える
192

$.delay は、実行を停止するのではなく、キュー内のアニメーションを遅らせるために使用されます。

while ループを使用する代わりに、次を使用して毎秒チェックを実行するメソッドを再帰的に呼び出す必要がありますsetTimeout

var check = function(){
    if(condition){
        // run when condition is met
    }
    else {
        setTimeout(check, 1000); // check again in a second
    }
}

check();
于 2012-01-17T14:32:02.367 に答える
10

jQuery のdelay関数は、エフェクトとエフェクト キューで使用することを意図しています。delayドキュメントとその中の例を参照してください。

$('#foo').slideUp(300).delay(800).fadeIn(400);

変数の変化を観察したい場合は、次のようにすることができます

(function() {
    var observerInterval = setInterval(function() {
        if (/* check for changes here */) {
           clearInterval(observerInterval);
           // do something here
        }
    }, 1000);
})();
于 2012-01-17T14:43:03.837 に答える
9

JavaScriptsetTimeoutは非常に優れたソリューションです。

function funcx()
   {
   // your code here
   // break out here if needed
   setTimeout(funcx, 3000);
   }

funcx();

jQueryのdelay関数は、主に jQuery アニメーション キューでアニメーションを遅延させるために使用されます。

于 2012-01-17T14:36:47.250 に答える
7

delay()コードの流れを止めて再実行しません。JavaScript でこれを行う実際的な方法はありません。setTimeout他の人が言及したようなコールバックを取る関数ですべてを行う必要があります。

jQuery の目的は、delay()実行前にアニメーション キューを待機させることです。たとえば$(element).delay(3000).fadeIn(250);、要素を 3 秒後にフェードインさせます。

于 2012-01-17T14:37:20.100 に答える
4

Javascript は非同期プログラミング言語であるため、実行を一時的に停止することはできません。実行を [疑似] 停止できる唯一の方法は、遅延ではなく「遅延関数コールバック」である setTimeout() を使用することです。

于 2012-01-17T14:56:56.657 に答える