Jquery 嵌套按顺序运行的函数
我知道这是基本的,但在查看了多个资源(如)后,我被卡住了。如何嵌套Jquery 嵌套按顺序运行的函数,jquery,function,callback,Jquery,Function,Callback,我知道这是基本的,但在查看了多个资源(如)后,我被卡住了。如何嵌套functionTwo,使其仅在functionOne完成后运行?以下是我的尝试。(实际上,我想在Functions2中做一些更复杂的事情,我只是简化了这个测试用例。) 这是可行的,但它们是独立运行的吗?当I时,不会记录任何内容(除非这是一个单独的错误) 然后我试了一下: $(function () { functionOne(); }); function functionOne() { $(".foo:fi
functionTwo
,使其仅在functionOne
完成后运行?以下是我的尝试。(实际上,我想在Functions2中做一些更复杂的事情,我只是简化了这个测试用例。)
这是可行的,但它们是独立运行的吗?当I时,不会记录任何内容(除非这是一个单独的错误)
然后我试了一下:
$(function () {
functionOne();
});
function functionOne() {
$(".foo:first").attr('id', 'bar', function () {
functionTwo();
});
}
function functionTwo() {
console.log($('.foo:first').attr('id'));
}
没有记录任何内容。如果.attr
然后:
没有记录任何内容。我不认为.when
和.done
应该这样使用
那么我应该如何嵌套这些函数呢?为什么不尝试返回第二次调用的函数呢
function functionOne() {
$(".foo:first").attr('id','bar');
return functionTwo();
}
第一条路就是去这里的路
$(function () {
functionOne();
});
function functionOne() {
$(".foo:first").attr('id','bar');
functionTwo();
}
function functionTwo() {
console.log($('.foo:first').attr('id')); // log the new id: 'bar'
}
.attr
是同步的,因此它可以正常工作
在setTimeout
示例()中,您使用的setTimeout
不正确
setTimeout(function functionOne() {}, 2000)
这和你想象的不一样。这将创建一个函数,并在2秒后运行它。名称functionOne
将仅存在于函数自身的范围内
你可能想要这个:
$(function () {
functionOne();
});
function functionOne() {
setTimeout(function(){
$(".foo:first").attr('id','bar');
functionTwo();
}, 2000);
}
function functionTwo() {
console.log($('.foo:first').attr('id')); // log the new id: 'bar'
}
演示:
设置超时(函数functionOne(){
没有你认为的那样做。这似乎不是第一个方法不起作用的原因。而且不,attr
不接受回调。你是对的,当
不起作用时。第一个有什么问题吗?不能将非jquery方法链接到$。当作为参数传递时,我可以在chro中看到日志我。这与他的第一个示例有什么不同?这里的返回的意义是什么?它如何修复/更改任何东西?它提供了将成功/失败消息传回调用方的能力。1目前的情况下,它不会给调用函数提供反馈。但这并不能真正回答这里的问题。
setTimeout(function functionOne() {}, 2000)
$(function () {
functionOne();
});
function functionOne() {
setTimeout(function(){
$(".foo:first").attr('id','bar');
functionTwo();
}, 2000);
}
function functionTwo() {
console.log($('.foo:first').attr('id')); // log the new id: 'bar'
}