1

我有一个看起来像这样的元素列表

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

在 Backbone 渲染中,我想为这些元素添加背景颜色,这些元素取自它们的数据属性。我试着这样做

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' ,但正如您所见。可能是什么问题?

4

2 回答 2

3

这是因为当您使用它的索引访问 jQuery 对象中的项目时,您访问的是实际项目,而不是包含该data方法的 jQuery 对象。

尝试这个:

$(".depuy a").each(function() {
    console.log($(this).data('color'));
});
于 2013-08-21T08:54:30.963 回答
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);
}
于 2013-08-21T09:02:31.893 回答