2013-08-21 36 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); 
}