2013-08-21 57 views
1

我有元素的列表看起來像這樣的Javascript,JQ數據類型的衝突

<li class="depuy"> 
    <a class="comp" data-color="#66" href="#"> 
     Something 
    </a> 
</li> 

在骨幹渲染,我想補充一個背景顏色從他們的數據屬性取出這些元件。我試圖做到這一點

var som_array = $(".com a"); 
var som_array_length = som_array.length; 
for(var i=0;i<som_array_length;i++) 
{ 
    var som_object = som_array[i].data("color"); 
    console.log(som_object); 
} 

但是,在一個控制檯我得到這個消息Uncaught TypeError: Object [object HTMLAnchorElement] has no method 'data'但是當你看到它。可能是什麼問題?

回答

3

這是因爲當你使用它的索引訪問jQuery對象中的一個項目時,你訪問的是實際項目,而不是包含data方法的jQuery對象。

試試這個:

$(".depuy a").each(function() { 
    console.log($(this).data('color')); 
}); 
+0

它的工作原理!非常感謝 ! – chipatama

0

必須在jQuery的集換你的元素。否則,它將只是一個沒有jQuery函數的dom元素。

var competitors_array = $(".depuy a"); 
var competitors_array_length = competitors_array.length; 
for(var i=0;i<competitors_array_length;i++) 
{ 
    var competitor_object = $(competitors_array[i]).data("color"); // Like this 
    console.log(competitor_object); 
}