两者jQuery.fn.dequeue
和next
函数都是简单的包装器jQuery.dequeue
,在两个示例中传递相同的参数集。
(截至 jQuery 1.9.1 是最新的)
对于下一个函数参数:type
是一个可选参数,表示队列,默认fx
是jQuery的默认动画队列。element
是一个 DOM 元素引用。
$.fn.dequeue
:
dequeue: function( type ) {
return this.each(function() {
jQuery.dequeue( this, type );
});
}
$().dequeue
只需调用$.dequeue
包含在 jQuery 对象中的每个元素。
您的用例$(this).dequeue()
将使用最初引用的元素调用$.dequeue
一次this
。
类似地,next
将传递一个对 的元素引用$.dequeue
,它是队列出队的当前元素:
next = function() {
jQuery.dequeue( elem, type );
};
换句话说,这些本质上是相同的。next
更直接一点,因为它没有迭代包装器,因此next()
应该比$.fn.dequeue()
.
主要区别在于您可以调用.dequeue()
多个元素,它将使每个元素出队,而next()
直接与队列出队的元素相关联。
对于$(this).dequeue()
回调内部的用例,这是无关紧要的。$.fn.dequeue
在开始使一个或多个元素出队时很有用。$(this).dequeue()
具有与 等效的结果next()
,但在这种情况下,后者将提供微秒的增益。
正如@Explosion Pillsfx
在评论中指出的那样,在处理非队列时还有一个特殊之处:
$(this).dequeue()
没有type
参数将使默认队列(fx
)出队,因此非fx
队列需要将名称作为参数传递给.dequeue()
,同时.next()
查找其创建范围的链并自动检索创建函数对象type
的范围内。$.dequeue()
next
因此,当使用非fx
队列时,您必须将队列名称传递给$().dequeue(queueIdentifier)
,而.next()
始终在回调所属的队列中出列。