javascript - 如何确定使用哪个 - next();或出列();?

标签 javascript jquery optimization

<分区>

如果我这样做有什么区别吗:

$queue.queue(function(next){
   //...
   next();
}).queue(function(next){
   //...
   next();
});

对比

$queue.queue(function(){
   //...
   $(this).dequeue();
}).queue(function(){
   //...
   $(this).dequeue();
});

他们做同样的事情吗?

有什么区别,我应该使用哪个?

这很奇怪,因为 jQuery 文档并没有真正提到 .next(),他们总是说使用 .dequeue() 但在我的工作场所人们使用 .next() 函数,所以这让我很困惑。

最佳答案

据我所知,没有区别。我不确定为什么一个比另一个更可取,或者为什么它们都被提及,因为这让我感到困惑。

查看http://code.jquery.com/jquery-1.9.1.js我们看到:

1915 next = function() {
         jQuery.dequeue( elem, type );
     };

...在 jQuery.dequeue 中方法。稍后(在第 1936 行)将其称为 fn.call(elem, next, hooks)。 .你看nextqueue 中的第一个参数回调,和fnqueue那时。

展望 future ,我们看到

1983 dequeue: function( type ) {
         return this.each(function() {
             jQuery.dequeue( this, type );
         });
     },

这是在 jQuery.fn 上定义的, 所以这就是 $(this).dequeue 调用的函数.然而,这做的是完全一样的事情。唯一的区别是出队的元素。在 fn.dequeue它遍历集合,但这只是 $(this) 的一个元素.

如果我们回头看,我们会看到什么elem虽然是:

1908 dequeue: function( elem, type ) {

...嘿,等一下...这是this (当从 $(this).dequeue 调用时)!因此你可以看到他们做的是完全一样的事情。 $("some other collection").dequeue不过,工作方式会有所不同。

调用 next()为您节省额外的 .each打电话,所以我想那会更快。

顺便说一下,你不必调用它 next在回调中,因为您可以将参数重命名为您想要的任何名称。

编辑:根据我与杰出同事@FabrícioMatté 的小型讨论,next() 之间实际上可能存在功能差异。和 $(this).dequeue() ,特别是在不使用标准时 fx队列。当 next函数被创建,它被设置为调用$.dequeue使用从 queue 获取的类型已经,但是 $.fn.dequeue将类型作为参数。这可能是坚持使用 next() 的更多动力,尽管我实际上从未见过有人使用标准效果队列以外的任何东西。

关于javascript - 如何确定使用哪个 - next();或出列();?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15102352/

相关文章:

javascript - 遍历嵌套的 firebase 对象 - Javascript

python - 带 ILU 预处理器的一般最小残差 (GMRES)

r - R中重启、优化的累积和

javascript - 在 html5 Canvas 上通过 emscripten 使用 WebGL

javascript - 如何使用 Twitter Bootstrap 中的弹出框来显示图像?

javascript - 使用 JQuery 中的函数 .on() 处理事件 onfocus

javascript - 在匹配的 DOM 元素集上使用 jQuery 时,是否需要使用索引号?

php - 防止使用 jQuery 进行 Ajax 时的默认操作

javascript - 如何隐藏和显示带有选中复选框的表列

python - 在 Python 3 中返回整数中最低有效位集的位置的最快方法是什么?