2011-06-07 12 views
2

jqueryコードを1つずつ実行する方法は? 私はまず仕事を終えるときに "機能1"をします。次に「機能2」を実行してください...jqueryコードを1つずつ実行する方法は?

ありがとうございます。

<script type="text/javascript"> 
jQuery(document).ready(function(){ 
    $(document).ready(function(){ 
    //function 2, jqeury.ajax 
    }); 
    $(document).ready(function(){ 
    //function 3, jqeury.json 
    }); 
    $('#col').load("home.html"); 
    //function 4, jqeury.load 
    }); 
}); 
</script> 
<script type="text/javascript"> 
jQuery(document).ready(function(){ 
    //function 1, a jquery slider plungin 
}); 
</script> 
+0

複数のドキュメントの準備が整っていない機能を残しておけば、複数のドキュメントを準備する必要はありません。したがって、親ドキュメントを準備しておき、関数2と3の虚構さを見せてください。通常、そのような匿名jquery関数があるときは、関数呼び出しの後にカンマで次の関数を呼び出すことができます。 –

+0

ajaxを非同期にロードするなど、特に指定しない限り、すべてがデフォルトで1つずつ順番に実行されます。 – 472084

+0

可能な複製:http://stackoverflow.com/questions/6251228/load-sequentially-instead-of-at-the-same-time-with-jquery/ – marcosfromero

答えて

9

ドキュメントレディコールはあまり必要ありません。 1つは十分です

あなたが作成しているAJAX呼び出しからの応答を受け取った後で、それぞれのメソッドを呼び出すことを意味する場合は、コードをコールバックに入れます。

$(document).ready(function(){ 
    one(); //call the initial method 
}); 

function one(){ 
    $.get('url', {}, function(data){ 
     two(); //call two() on callback 
    }) 
} 

function two(){ 
    $.getJSON('url', {}, function(data){ 
     three(); //ditto 
    }) 
} 

function three(){ 
    $('#selector').load('url'); 
} 

ドキュメント

http://api.jquery.com/jQuery.get/

http://api.jquery.com/jQuery.getJSON/

http://api.jquery.com/load/

-1

使用setTimeout機能

function f1(para) { 
    // ... 
    // do work; 
    setTimeout(f2, 10); 
} 

function f2() { 
    // ... 
    // do work 
    setTimeout(f3, 10); 
} 
+0

setTimeoutは悪い解決策です。次のsetTimeoutが期限切れで実行される前にajax呼び出しが終了することを保証することはできません。競合状態が発生します。 – Stephen

-1
<script type="text/javascript"> 

jQuery(document).ready(function(){ 
    function2(){ //declare what function 2 will do here 
    //function 2, jqeury.ajax 
    } 
    function3(){ 
    //function 3, jqeury.json 
    } 
    $('#col').load("home.html"); 
    //function 4, jqeury.load 
    }); 
}); 
</script> 
<script type="text/javascript"> 
jQuery(document).ready(function(){ 
    //function 1, a jquery slider plungin 

    function2(); // execute function 2 after 1 
    function3(); 
}); 
</script> 
+0

関数2と3は、起動前にサーバーへの非同期呼び出しが完了するまで待機しません。 – Stephen

+0

@stephenすべての投稿が完了するのを待っていたら、私は非同期を使用しません。 afaikにそれをオフにするオプションがあります – gen

+0

それは本当です:同期要求が解決するまでブラウザをロックしたい場合。 http://www.hunlock.com/blogs/Snippets:_Synchronous_AJAX – Stephen

0

3つのajax呼び出しを行っているようです。コールバック関数を使用し

$(function() { // this is a document ready function. it's all you need. 
    $.ajax(/* your ajax specs */).done(function() { 
     $.getJSON('somepath').done(function() { 
      $('#container').load('etc.'); 
     }); 
    }); 
}); 
2

代わりに複数のdocument.readyを使用して():jQueryの1.5以来、私たちは今、(技術的にjqXHRオブジェクト)あなたはこのようにそれらをチェーンことができますので、AJAX呼び出しから返さDeferred objectを持っています以下。

<script type="text/javascript"> 
function ajaxfun() { 
    //function 2, jqeury.ajax 
    //in ajax callback call the jsonfun(); 
} 
function jsonfun(){ 
    //function 3, jqeury.json 
    //after json function add the next function in it callback. 
} 
</script> 
<script type="text/javascript"> 
jQuery(document).ready(function(){ 
    //function 1, a jquery slider plungin 
    //Call ajaxfun() here to execute second. 
}); 
</script> 
関連する問題