0

jqueryでメソッド実行の正しいシーケンスを見つけようとしています。

これがサンプルスクリプトです。

$(document).ready(function(){
    $("#start").click(function(){
        $("div").fadeOut(function(){
            console.log("i am no 1");
        }).fadeIn(function(){
            console.log("i am no 2");
        }).show('slow',function(){
            console.log('i am no 3');
        });
    });
});

したがって、id="start"のボタンをクリックすると。次に、コンソールのo/pは次のようになります。

あいあむなんば

私は2ではありません

私は3歳ではありません

しかし実際のo/pは

あいあむなんば

私は3歳ではありません

私は2ではありません

だから、jqueryスクリプトでメソッドの実行順序を決定する方法を知りたいですか?優先順位の根拠は何ですか?

4

4 に答える 4

0

@jfriend00に感謝します。jsFiddleとローカルホストで同じコードを試しましたが、期待どおりのo/pが得られました。

間違ったo/pは、W3schools.comのtryセクションからのものです。そこでコードを試しましたが、間違ったo / pを取得して、混乱しました。だから、私はjsFiddleがw3schoolsがあなた自身を試すよりもはるかに優れているという教訓を学びました。ありがとうございます。

于 2012-09-17T10:59:17.097 に答える
0

これを見てください:http://api.jquery.com/queue/

要するに:

fadeOut渡した関数を呼び出すと、エフェクトの完了に呼び出され、によって引き起こされたエフェクトfadeIn処理されます。

一般的なJavascriptプログラミング(コールバック、非同期関数呼び出しなど)をよく読んでおく必要があると思います。

于 2012-09-15T15:25:35.313 に答える
0

この問題は、 1.6.4より前のバージョンのjQueryを使用している場合にのみjsFiddleで再現できます。1.6.4以降を使用している場合、jsFiddleは私が試したすべてのブラウザーで機能します。

私の推測では、1.6まで実装されなかった機能を使用しようとしているか、1.6まで修正されなかったバグのある動作に遭遇していると思います。

jQuery 1.8.0での動作順序をここで確認できます:http://jsfiddle.net/jfriend00/tgraD/

ここで失敗した注文をjQuery1.5.2で確認できます:http://jsfiddle.net/jfriend00/SJns7/

于 2012-09-15T15:48:56.607 に答える
-1

これは、最初の関数の実行が完了する前に関数が実行されるためです。この問題を解決するには、最初の成功コールバックで2番目の関数を呼び出し、2番目の成功コールバックで3番目の関数を呼び出します。

于 2012-09-15T15:42:28.510 に答える