文档准备好后jquery触发动作

时间:2013-06-04 07:54:23

标签: jquery

我需要执行此步骤: -

  1. 文档准备好后,
  2. 做功能A,
  3. 功能A完成后,
  4. 执行功能B,C,D
  5. 虽然不完全是答案,但以下方式有效: -

    <script>
    $(document).ready(function(){
        function_a();
        setTimeout(function(){
            function_b(); 
            function_c();
            function_d();
        }, 100);
    });
    </script>
    

    当然,我不能总是依赖时间延迟!但是,以下方式无效: -

    <script>
    $(document).ready(function(){
        function_a();
    }).complete(function(){
        function_b(); 
        function_c();
        function_d();
    });
    </script>
    

    如何改进第二种方式?

4 个答案:

答案 0 :(得分:1)

function_a();

function function_a()
{
 ........
 function_b();
}

function function_b()
{
 ........
 function_c();
}

function function_c()
{
  ........
 function_d();
}

答案 1 :(得分:1)

$(document).ready(function(){
    function_a();
    function_b(); 
    function_c();
    function_d();

});

如果函数是同步的,也会这样做 对于异步函数,使用回调 这可能会有所帮助:How should I call 3 functions in order to execute them one after the other?

答案 2 :(得分:1)

如果function_a同步工作,您可以使用以下内容。

$(document).ready(function(){
    function_a();
    function_b(); 
    function_c();
    function_d();
});

但是如果它是异步的,那么function_a应该提供完整回调的参数:

$(document).ready(function(){
    function_a(function(){
      function_b(); 
      function_c();
      function_d();
    });
});

答案 3 :(得分:0)

如果你想要功能,请遵循你必须推动的那个序列Deferred。阅读jQuery .when().then()。 jQuery是为此而制作的。

How can jQuery deferred be used?

http://learn.jquery.com/code-organization/deferreds/examples/

function_a();
function_b(); 
function_c();
function_d();

以上方法也是正确的。但是如果function_a()具有异步函数,则此方法将不起作用。