我有一个网页,其中包含大量隐藏的 li 元素列表,我想无限循环并显示在一个包含 5 个 li 元素的小型可见列表中。我目前正在使用一种递归方法,该方法在每次更新后使用下一个 li 元素调用自身,该方法可以很好地一次淡入/淡出每个可见的 li 。但是,一旦我尝试将可见 li 中的 html 更改为隐藏 li 中的 html,我将循环遍历所有地狱。所有 5 个可见的 li 都设置为前 5 个隐藏的 li,并同时淡入/淡出。然后有一个长时间的停顿,页面冻结了一会儿,最终所有 5 个可见的 li 将再次淡入/淡出,仍然设置为前 5 个隐藏的 li。就像我突然尝试更改 html 时,整个循环同时发生,我可以'
$(function () {
fade($("#all-donors").first(), 1);
});
function fade(elem, curItem) {
var curElement = $("#donor" + curItem);
//curElement.html(elem.html()); //This line breaks it
curElement.fadeOut(1000).fadeIn(1000, function () {
curItem++;
if (curItem > 5) {
curItem = 1;
}
// If we're not on the last <li>
if (elem.next().length > 0) {
// Call fade on the next <li>
fade(elem.next(), curItem);
}
else {
// Else go back to the start
fade(elem.siblings(':first'), curItem);
}
});
}