這裏,它雖然有點hackish ...
var elems = $('span').hide().get();
(function loop() {
var i = 0, pointer;
pointer = $(elems).filter(':visible:last')[0] || $(elems).last()[0];
$(elems).hide();
while (i < 4) {
pointer = $(pointer).next()[0] || $(elems).first()[0];
$(pointer).show();
i += 1;
}
setTimeout(loop, 5000);
})();
現場演示:http://jsfiddle.net/hBrt6/
如果你需要的代碼的解釋,只是讓我知道...
幾點說明:
.get()
返回jQuery對象內的DOM元素數組。
所以
$('div').get()
讓你在網頁上的所有DIV元素的數組。
使用屬性訪問器運算符[i]
將爲您提供jQuery對象中的第i個DOM元素。
所以
$('div')[4]
返回頁面上的第五次DIV元素。
重要的是要明白,你不能在DOM元素本身(或DOM元素數組)上調用jQuery對象。
所以這
$('div')[4].hide();
拋出一個錯誤。 DOM元素沒有hide
方法。
如果您想要在jQuery對象中定位某個特定元素,同時仍保留jQuery對象,請使用.eq()
。
這
$('div').eq(4).hide();
的作品就好了。
現在你明白了這種差異,讓我解釋爲什麼我在我的代碼中使用get()
和[i]
:問題是,我不喜歡將jQuery對象存儲在變量中。相反,我更喜歡直接使用DOM元素和DOM元素數組。
當我需要調用一些元素或數組元素的jQuery方法時,我只是首先將它包裝在$()
函數中。
所以這
$(elems).hide();
的作品就好了。
當jQuery方法完成這項工作時,我只需附加.get()
或[0]
來「解開」jQuery對象=以獲取我的元素。
我認爲我有問題的主要原因是因爲我不知道如何使用jQuery數組與我可以循環的索引。 – Henryz