jquery中方法的执行顺序?

时间:2012-09-15 15:13:50

标签: jquery

我试图找出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应该是

  

我不是1

     

我不是2

     

我不是3

但实际的o / p是

  

我不是1

     

我不是3

     

我不是2

所以,我想知道如何知道如何在jquery脚本中决定方法的执行顺序?什么是优先权的基础???

4 个答案:

答案 0 :(得分:0)

看看这个:http://api.jquery.com/queue/

简而言之:

当您致电fadeOut时,您传入的功能会在效果完成后被称为然后fadeIn引起的效果为处理。

我相信你应该阅读一般的Javascript编程(回调,异步函数调用等)

答案 1 :(得分:0)

使用早于1.6.4的jQuery版本时,我只能在a jsFiddle中重现此问题。如果你使用1.6.4或更新版本,jsFiddle适用于我尝试的所有浏览器。

我的猜测是,您要么尝试使用直到1.6才实现的功能,要么遇到直到1.6时才修复的错误行为。

您可以在此处使用jQuery 1.8.0查看工作订单:http://jsfiddle.net/jfriend00/tgraD/

您可以使用jQuery 1.5.2查看失败的订单:http://jsfiddle.net/jfriend00/SJns7/

答案 2 :(得分:0)

感谢@ jfriend00。 我在jsFiddle和localhost上尝试了相同的代码,我得到了预期的o / p evertime。

错误的o / p来自W3schools.com尝试部分。我尝试了那里的代码,我得到了错误的o / p并迷惑自己。所以,我从中吸取了一个教训,即jsFiddle比它更好 w3schools尝试自己。 谢谢大家。

答案 3 :(得分:-1)

这是因为函数在完成第一个函数的执行之前执行。为了克服这个问题,第二个函数成功回调第二个成功回调中的第一个和第三个函数。