0

使用该data()函数,我将两个值添加到一些divs$oRow指向 div)

$oRow.data("more", {moreValue: 750, moreIndex: 4});

后来我试图找到div(只有一个)具有特定价值的moreIndex

我这样做是这样的:

$oMore = $(".meter_battery_row").filter(function(){
                   return $.data(this, "more").moreIndex == 4;
                   }); 

但这似乎不起作用。在上面的行之后我显示window.alert($oMore)但它似乎没有到达这一行,所以它在过滤器函数中运行某种问题。

有人有什么想法吗?

编辑

.meter_battery_rowdivs我附加数据值的类。($oRow属于类.meter_battery_row

4

4 回答 4

1
$('div.meter_battery_row[data-moreIndex="4"]') does not help you ? 

通常,该函数会将自定义值作为前缀属性.data()添加到您的 div 中。data-...

您可以使用属性选择器来获取您指定的 div。

检查您尝试使用 firebug 选择的元素,您会看到您的 moreIndex 已保存为 div 元素的属性。

于 2012-08-30T08:21:25.050 回答
1

您可以添加它 data- 属性,以便您可以在之后更轻松地检索它并且仍然使用$.fn.data()

$oRow.attr('data-moreIndex', 4).attr('data-moreValue', 750);
// ...
$oMore = $('.meter_battery_row[data-moreIndex="4"]');

这是一个活生生的例子

于 2012-08-30T08:25:20.213 回答
1

第一次检查$.data(this, "more")

return  ($.data(this, "more") && $.data(this, "more").moreIndex == 4);

否则,当并非所有元素都有更多数据并且过滤停止时,您将收到错误消息。

于 2012-08-30T08:26:48.747 回答
1

问题是,当您调用$.data(this, "more")只有一个元素会返回 object{moreValue: 750, moreIndex: 4}时,其余元素将返回 undefined。那么当你打电话时,undefined.moreIndex你会得到一个错误。尝试这样做:

 return $.data(this, "more") && $.data(this, "more").moreIndex == 4;
于 2012-08-30T08:27:15.097 回答