jQuery對象是DOM元素數組的一個包裝。所以「jQuery數組」是的一個jQuery對象。該對象包含頁面上與選擇器匹配的每個元素。你調用jQuery對象的大多數方法隱式循環遍歷數組中的所有元素並應用於所有元素。
,或者如果它只是得到了很大的包容 內置到它的每一個功能 允許一個單一的元素或 集合的元素。
這就是這種情況。真的,每種方法都可以在一個元素上工作,但是jQuery會多次調用它,因爲它需要處理對象。我相信它實際上在內部使用.each()
來做到這一點,所以如果你瞭解.each()
的工作原理,那麼你就會明白jQuery的隱式循環是如何工作的。
某些方法不適用於集合中的每個對象,但不適用於其文檔中的所有對象。例外情況是對每個元素都沒有意義的方法。例如,如果您致電$('.blah').innerHeight()
,您將獲得由$('.blah.')
返回的jQuery對象中第一個元素的高度。
也有方法可以獲取和設置屬性。獲取它們時,從第一個元素返回值,並在設置時應用於所有匹配的元素。例如,如果你調用$('.blah').css('font-size')
你會得到從集合中的第一元素的大小,但如果你打電話$('.blah').css('width', 100)
你設置的每元素寬度樣式jQuery的收藏。
請注意,您實際上可以像處理數組一樣處理jQuery對象。只需使用數組符號來訪問一個元素。
$jQ_obj = $('.classy').find('.refined');
element = $jQ_obj[3];
這第四個元素存儲具有類refined
並且是具有classy
元素的子頁面上。 element
中的結果對象是原始DOM對象。
二點,
由於所提到的這個答案被刪除,請確保您瞭解如何.each()
作品。您需要將它應用於每個匹配元素的函數傳遞給它,就像事件處理程序一樣。因此,它應該是:
jQuery('.someclass').each(function(i) { //don't forget the dot!
$(this).click(function() {
alert("I've been clicked!");
});
});
的回調中,以.each()
的this
關鍵字是指當前DOM元素繞環通過,並傳遞給回調的arg循環索引。 this
是一個原始DOM元素(想起它就像寫作$('.someclass')[i]
),所以你必須從它創建一個jQuery對象來調用.click()
。
筆記,看你點擊可以使用...功能(myevent){ 警報(myevent.target.nodeName)哪些因素; }); – 2010-07-21 19:33:01
只有第一個是正確的。第二個根本不起作用。另外,如果你想通過類名選擇一個元素,你需要使用'.someclass'(以句點開始)而不是'someclass'。 – user113716 2010-07-21 19:46:38
是的,沒有領先期限的'someclass'實際上是在尋找名爲''的html元素。 –
jasongetsdown
2010-07-21 20:04:45