如果有人对此问题有更好的,更具描述性的标题,请告诉我;我想不出一个描述我问题的好标题。
无论如何,我有一些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
个元素之后它会停止旋转而不再显示。
答案 0 :(得分:3)
这种情况正在发生,因为如果您没有使用jQuery找到三个元素,那么complete
永远不会大于或等于count
。
在我看来,你已经检测到你的增加超过了li
元素的数量:
if (j++ >= jmax) {
j = 1;
}
如果这项工作正常,您可以在此处调用您的页面方法:
if (j++ >= jmax) {
j = 1;
page();
} else if (++complete >= count) {
page();
}