当li元素不可均分时,jQuery列表滑块停止

时间:2015-09-15 20:00:43

标签: javascript jquery html

如果有人对此问题有更好的,更具描述性的标题,请告诉我;我想不出一个描述我问题的好标题。

无论如何,我有一些jQuery代码允许我通过一次显示3个li元素来轮换列表项。

但是,当我拥有的li元素数量不能被3整除时,我遇到了问题。

这是jQuery:

$( document ).ready(function() {
var j = 1;
var inbetween = 7000; //milliseconds   
function page() {
  var jmax = $("#leader-slider li").length;
  var count = 3;

  var start = j;
  var end = j + count - 1;
  var complete = 0;
  console.log(j, start, end);

  var range = $('#leader-slider li:nth-child(n+'+ start + '):nth-child(-n+'+  end +')');
  range
    .fadeIn(400)
    .delay(inbetween)
    .fadeOut(400, 'swing', function() {
      if (j++ >= jmax) {
        j = 1;
      }

      if (++complete >= count) {
        page();  
      }
    });
};
page();
});

当我有3,6,9,12等时,这很有效。 li元素。但是只要我有一个不能被3整除的数字,就像8一样,它会循环遍历所有这些数字,但是在它显示最后li个元素之后它会停止旋转而不再显示。

1 个答案:

答案 0 :(得分:3)

这种情况正在发生,因为如果您没有使用jQuery找到三个元素,那么complete永远不会大于或等于count

在我看来,你已经检测到你的增加超过了li元素的数量:

 if (j++ >= jmax) {
    j = 1;
  }

如果这项工作正常,您可以在此处调用您的页面方法:

 if (j++ >= jmax) {
    j = 1;
    page();
 } else if (++complete >= count) {
    page();  
 }