首页 > 解决方案 > .每个都不会不断循环

问题描述

我的印象是.each会不断循环遍历一个序列,直到它被明确告知要通过返回 false 来停止?但是,下面的脚本正确地循环遍历了我的每个“ticker-item”元素,但是在最后一个元素之后不会重复?

  <script>
    var a = [];
    $(".ticker-item").each(function(index) {
      a[index] = $(this);
      setTimeout(function() {
        a[index].addClass('current').delay(8e3).queue(function(next) {
          a[index].removeClass('current');
          return;
          next();
        });
      }, index * 8e3);
    });
  </script>

如何让这个脚本循环回来并在第一个循环后将“当前”添加到第一个项目?

标签: jquery

解决方案


我认为你假设$.each做的比你期望的要多。

例如:

<ul>
  <li class="ticker-item">1</li>
  <li class="ticker-item">2</li>
  <li class="ticker-item">3</li>
  <li class="ticker-item">4</li>
</ul>
// Loop through each
$('.ticker-item').each((i) => {})

以上将遍历每个股票项目一次。如果您添加/删除/更新/计时器/等。您将不得不$.each再次调用以运行代码。

一个粗略的例子:

function doSomethingtoList() {
 $('.ticker-item').each(() => /*blah blah*/)
}
// Loop every 5 secs.
setInterval(doSomethingToList, 5000)

推荐阅读