1

这里总新手。我有一个脚本,它使用 setInterval 过滤列表并每 2 秒向每个列表项添加/删除一个类。

我怎样才能编辑这个脚本,以便我可以为每个 setInterval 循环应用不同的时间?

例如:对于第一个列表项,我希望 setInterval(或延迟)为 3 秒,我希望第二个列表项为 1.5 秒,依此类推,直到列表完成......我需要每个循环的时间不同。怎么能做到这一点?非常感谢您的帮助。

$(function() {
var $list = $('#animation li');
    $list.filter(':first').addClass('go');

    setInterval(function() {
      if( $list.filter('.go').index() !== $list.length - 1 ) {
      $list.filter('.go').removeClass('go').next().addClass('go');
      }
    else {
      $list.removeClass('go').filter(':first').addClass('go');
      }
   }, 2000);
4

2 回答 2

2

非常原始的示例,但仅显示方法:

var $list = $('#animation li');
var worker = function(){
  //
  // perform your process(es)
  //

  // only continue on if necessary
  if (continue_working)
    timer = setTimeout(worker, Math.random() * 5 * 1000);
}
var timer = setTimeout(worker, 2000);

// to stop at any time
clearTimeout(timer);
于 2011-02-10T05:26:23.983 回答
0

在 setInterval 中调用 setInterval。

var intervalFunc = new function(){
    if( $list.filter('.go').index() !== $list.length - 1 ) {
  $list.filter('.go').removeClass('go').next().addClass('go');
  }
else {
  $list.removeClass('go').filter(':first').addClass('go');
  }
  // Calculate the next time func
  var timeout = ...
  setInterval(intervalFunc, timeout);
}

setInterval(intervalFunc, 2000);
于 2011-02-10T05:25:53.550 回答