我正在嘗試處理所有具有特定data-
屬性集的select元素。每當.data用於返回的元素時,jquery .each產生'undefined'
我有循環工作來拾取元素,但每當我嘗試找到其他data-
屬性的值,我得到undefined
錯誤消息。
這裏是循環:
$('select[data-hm-observed="1"]').each(function(idx, sel) {
alert(sel.getAttribute('data-hm-url'));
alert(sel.data('hmUrl'));
});
在循環第一個警報工作,但第二個生產:
TypeError: 'undefined' is not a function (evaluating 'sel.data('hmUrl')')
如果我使用Safari瀏覽器的控制檯,我可以得到的選擇對象,把它在一個變量中,並詢問其屬性沒有問題。
看起來.each()
對sel
變量內容有影響 - 但我不明白是什麼。
使用jQuery 1.7.1
UPDATE:
剛發現,如果我改變循環,使其再次明確獲取的元素,它的所有作品:
$('select[data-hm-observed="1"]').each(function(idx, sel) {
xx = $(sel);
alert(sel.getAttribute('data-hm-url'));
alert(xx.data('hmUrl'));
});
是這是正確的解決方案? 我可以推斷,由.each傳遞給循環的元素沒有被jquery「處理」,並且我必須通過$(...)自己抽取它,以便jquery完成它的任務 - 這感覺不對 - 但它的工作。
優秀謝謝你。是否有一個原因,爲什麼.each返回它作爲一個DOM而不是一個jQuery對象? – Houdi 2012-03-02 11:00:37
@Houdi在引擎蓋下,jQuery「集合」是DOM元素的數組。迭代時,您會獲得這些DOM元素。基本上,當你做'$(sel)'時,你創建一個新的jQuery集合,只保存這一個對象。在幾種情況下,你不需要jQuery方法,只需簡單的DOM東西('.each()'中的'console.log(this.id)'就可以正常工作)。 – kapa 2012-03-02 11:04:12