非表示の li 要素の大きなリストを含む Web ページを持っています。これを無限にループして、5 つの li 要素の小さな可視リストに表示したいと考えています。私は現在、各更新後に次のli要素で自分自身を呼び出す再帰的なメソッドを使用しています。これは、表示されている各liを一度に1つずつ永遠にフェードイン/アウトするのにうまく機能します。ただし、表示されている 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);
}
});
}