2013-04-03 50 views
0

我缺少一些jQuery對象的結構。我需要訪問<li>項目的數據屬性。 這將產生預期的輸出,打印最後<li>的數據對象到控制檯:jquery選擇器和循環

console.log($('#assessment_list li:last').data()); 

但是當我嘗試遍歷較大的物體來獲取數據的每個<li>,我得到一個錯誤:

for (item in $('#assessment_list li')){ 
    console.log(item.data()); 
} 

throws:「Uncaught TypeError:Object 0 has no method'data'」。我應該如何修改for循環中的選擇器,以僅選擇<li>元素,而不是jQuery對象中的其他鍵?

回答

3

嘗試:

$('#assessment_list li').each(function() { 
    console.log($(this).data()); 
}); 
+0

+1,偉大的答案! – adeneo

+0

@ adeneo感謝隊友。 – thecodeparadox

+0

@thecodeparadox - 我試過這個,但得到了一個關於htmlElementLi不同的錯誤 - 沒有方法.data()再次 - 基本相同的錯誤,但不同的對象標識符。下面的解決方案jmar777建議工作。我對於爲什麼這樣工作並且你的建議並不合適感到有些迷惑,但我現在回到了正軌。謝謝! – burgerB

-1

你可以得到所有的數據值的數組與map

var values = $('#assessment_list li').map(function() { 
    return $(this).data(); 
}).get(); 

console.log(values); 
+0

謝謝@ jamr777,這工作就像一個魅力。 – burgerB

+0

出於好奇,爲什麼對這個投票呢? – jmar777

+0

是的,我不明白downvote;這真的很有幫助。這實際上是我最終採取的方法。我確實設置了另一個答案,因爲它接近我提出的原始問題的方式,但是我確實想要數組中的值,所以我使用代碼的建議。再次感謝 – burgerB