我需要淡入幾個列表元素,然後淡出所有元素並重新開始。我有我在這裏找到的代碼:http://jsfiddle.net/mqthK/,這裏指出:Jquery: Fade multiple elements one after the other。 Howevever,我需要遞歸地運行這個代碼(即 - 淡出所有元素,然後再次調用函數並重新開始)。逐個淡入元素,然後全部淡出並重新開始
請問有人可以爲此分享正確的代碼嗎?
謝謝!
我需要淡入幾個列表元素,然後淡出所有元素並重新開始。我有我在這裏找到的代碼:http://jsfiddle.net/mqthK/,這裏指出:Jquery: Fade multiple elements one after the other。 Howevever,我需要遞歸地運行這個代碼(即 - 淡出所有元素,然後再次調用函數並重新開始)。逐個淡入元素,然後全部淡出並重新開始
請問有人可以爲此分享正確的代碼嗎?
謝謝!
如果更新到1.4.4的jQuery或更高版本,可以使用fadeToggle
方法。
如果選擇全部要淡出的元素,並在接下來的元素的索引發送到顯示/隱藏,你可以很容易地循環,並重新啓動:
function fadeLI(elem, idx) {
elem.eq(idx).fadeToggle(500, function() {
fadeLI(elem, (idx + 1) % elem.length);
});
}
fadeLI($("#list li"), 0);
檢查是否有是下一個元素;如果沒有,你就在列表的最後;然後淡出所有內容並使用第一個元素運行。
是的,我理解邏輯,但我需要一些幫助正確的代碼(嘗試在這裏小心遞歸函數)。 – Ran 2011-04-14 16:30:53
更改fadeLI到如下:
工作例如:http://jsfiddle.net/mqthK/45/
function fadeLI(elem, show) {
if(elem.length == 0){
fadeLI($("#list li:first"));
}
if(elem.is(":visible")){
elem.fadeOut(500, function() {
fadeLI($(this).next());
});
}
else{
elem.fadeIn(500, function() {
fadeLI($(this).next());
});
}
}
也許這只是你的大腦被打斷了,但只是爲了確定:你不想遞歸地去做。迭代是你將要使用的東西,對吧? – 2011-04-14 16:30:05
'腦呃'聽起來是正確的......這是一個12小時的工作日,我還沒有看到它的結尾...... – Ran 2011-04-14 16:49:44