我试图找出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脚本中决定方法的执行顺序?什么是优先权的基础???
答案 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)
这是因为函数在完成第一个函数的执行之前执行。为了克服这个问题,第二个函数成功回调第二个成功回调中的第一个和第三个函数。