在此队列函数中使用jquery next()

时间:2013-02-26 06:04:28

标签: javascript jquery

我正在阅读有关jquery queue() here的内容。第一个答案非常全面:

var theQueue = $({}); // jQuery on an empty object - a perfect queue holder

$.each([1,2,3],function(i, num) {
  // lets add some really simple functions to a queue:
  theQueue.queue('alerts', function(next) { 
    // show something, and if they hit "yes", run the next function.
    if (confirm('index:'+i+' = '+num+'\nRun the next function?')) {
      next();
    }
  }); 
});

// create a button to run the queue:
$("<button>", {
  text: 'Run Queue', 
  click: function() { 
    theQueue.dequeue('alerts'); 
  }
}).appendTo('body');

// create a button to show the length:
$("<button>", {
  text: 'Show Length', 
  click: function() { 
    alert(theQueue.queue('alerts').length); 
  }
}).appendTo('body');

jsfiddle

我无法理解next()(第8行)是如何运作的。我明白了,如果我发表评论,“下一个”确认框无法弹出,直到我再次按下按钮,但我认为next()主要用于遍历dom。在这里,似乎它告诉函数再次运行。

此外,如果confirm框的排队在each()函数内,为什么在没有next()的情况下它们都会成功排队?

1 个答案:

答案 0 :(得分:3)

next是要排队的回调函数中的参数。 不要将它与用于DOM导航的jQuery集合方法.next()混淆。

您实际上可以在回调as I demonstrate here中创建所需的参数。名称next并不特别重要;它只是在文档中有意义。

这个参数本身就是一个由jQuery的内部传递给.queue的函数(回调)。