我想增加我對jQuery的理解。請考慮下面的代碼。使用jQuery集合
if ($('.myClass').data('id') == '123') {
}
這是如何工作的?它看起來很簡單,直到你明白$()
返回一組元素。那麼上面的代碼究竟做了什麼?如何比較這樣的元素的集合的data-id屬性值?
(我知道我可以使用each()
集合中明確測試的每個元素我的問題是關於什麼上面的代碼一樣。)
我想增加我對jQuery的理解。請考慮下面的代碼。使用jQuery集合
if ($('.myClass').data('id') == '123') {
}
這是如何工作的?它看起來很簡單,直到你明白$()
返回一組元素。那麼上面的代碼究竟做了什麼?如何比較這樣的元素的集合的data-id屬性值?
(我知道我可以使用each()
集合中明確測試的每個元素我的問題是關於什麼上面的代碼一樣。)
.data('id')
返回集合中的第一個項目的價值,但.data('id','xyz')
將設定值集合中的所有項目 - 許多相同的行爲,其它的jQuery方法,如.html()
,.text()
等
它可能似乎沒有什麼意義,只是在類似的if
聲明中測試第一個,但對於知道只有一個元素的情況,例如當您的選擇器是id時,或者在內部使用$(this).data('id')
時更有意義事件處理程序或其他。
如果你問如何測試集合中的所有項目是否有一個特定的數據值,你可以這樣做:
var $col = $('.myClass');
if ($col.length === $col.filter(function(){return $(this).data('id') === '123';}).length) {
// do something
}
或者,如果你只是想知道,如果至少一個具有數據值:
if ($('.myClass').filter(function(){return $(this).data('id') === '123';}).length > 0) {
// do something
}
我更新了我的問題以使其更清晰好,對集合中的第一項進行操作很酷,不僅易於理解,而且表現完全符合我的願望它來。 –
您可以使用jQuery。每() - http://api.jquery.com/jQuery.each/
例在註釋中,因爲stackoverflow不喜歡jsFiddle那麼多。
http://jsfiddle.net/ByUeE/ – daniel
對不起,我猜在我的問題的措辭中有些含糊不清。我已經更新了它,以便更清楚 –
我相信如果你試圖通過jquery函數獲取值,它將返回集合中第一個項目的值。例如,如果您有:
<div class='1'></div>
<div class='2'></div>
<div class='3'></div>
並運行:
$('div').attr('class');
它將返回 「1」。我不知道這是否通過所有jQuery函數是統一的,但這是預期的行爲。
'.data('id')'返回集合中第一個項目的值。您是否在問如何測試集合中的_all_項是否具有該特定數據值? – nnnnnn
@nnnnnn + 1,但我認爲OP(正確)評論說它不清楚從[documentation](http://api.jquery.com/data/)data'(obj)'返回值爲第一個匹配的元素。 –
不,我會問,如果這是我想知道的。所以也許你在評論的第一部分回答了這個問題。 –