在片段中,
$({}).queue(function(next){})
什么$({})代表什么呢?为什么人们使用这种形式?
更新答案
该答案中的代码:
$(document)
.queue(callMe1)
.queue(callMe2);
Run Code Online (Sandbox Code Playgroud)
...然后有一条评论建议使用{}而不是document:
$({})
.queue(callMe1)
.queue(callMe2);
Run Code Online (Sandbox Code Playgroud)
您可以这样做来建立一个调用链,在该调用链中的后续调用只有在前面的调用完成后才会发生。他们所做的事情可以是同步的,也可以是异步的。这是一种早期的承诺形式。
让我们举个例子:假设我想做三件事,一件接着一件,每一件事情可能会也可能不会异步执行某些操作,例如动画。我们可以这样做:
$({}).queue(theFirstThing)
.queue(theSecondThing)
.queue(theThirdThing);
Run Code Online (Sandbox Code Playgroud)
...并且后面的函数不会被调用,直到前面的函数表示它们已完成。
例子:
$(document)
.queue(callMe1)
.queue(callMe2);
Run Code Online (Sandbox Code Playgroud)
$({})
.queue(callMe1)
.queue(callMe2);
Run Code Online (Sandbox Code Playgroud)
原答案:
文档告诉我们:
jQuery(对象)
object
类型:PlainObject
包装在 jQuery 对象中的普通对象。
例如,它将一个 jQuery 实例包装在一个普通对象周围。我们习惯于将 jQuery 实例包裹在一个或多个 DOM 元素中,但它们也可以包裹在其他元素中。
然后他们queue对生成的 jQuery 对象进行操作:
.queue( [队列名称], 回调 )
queueName
类型:String
包含队列名称的字符串。默认为 fx,标准效果队列。回调
类型:Function( Function next() )
要添加到队列的新函数,以及要调用的函数,该函数将使下一个项目出列。
这告诉我们它在做什么:将 jQuery 对象包装在普通对象周围,然后调用queue将某些内容放入该 jQuery 对象的默认动画队列中,即使其中没有要动画的元素。
人们为什么使用这种形式?
我从来没见过这样用过。我想不出任何理由使用它,如您的问题所示,它只是在调用过程中立即调用该函数queue,正如我们在这里看到的:
$({}).queue(theFirstThing)
.queue(theSecondThing)
.queue(theThirdThing);
Run Code Online (Sandbox Code Playgroud)
$({}).queue(theFirstThing)
.queue(theSecondThing)
.queue(theThirdThing);
function theFirstThing(next) {
// What I do is asynchronous: Fade out the a1 element,
// then call the next function in the chain if any
$("#a1").fadeOut("slow", next);
}
function theSecondThing(next) {
// What I do is synchronous
$("<p>Hi there</p>").appendTo(document.body);
// Chain to next if any
next();
}
function theThirdThing(next) {
// What I do is asynchronous: Fade out the a2 element,
// then call the next function in the chain if any
$("#a2").fadeOut("slow", next);
}Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
338 次 |
| 最近记录: |