JQuery的。查找具有与之关联的特定数据()的div

时间:2012-08-30 08:15:59

标签: javascript jquery

使用data()函数,我将两个值添加到某些divs$oRow点到divs)

$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_row,但它似乎没有到达这一行,所以它在过滤函数中遇到某种问题。

有人有任何想法吗?

修改

divs是我附加数据值的$oRow类。 (.meter_battery_row属于班级{{1}})

4 个答案:

答案 0 :(得分:1)

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

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

您可以使用attribute selectors获取指定的div。

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

答案 1 :(得分:1)

您可以添加数据属性,这样您就可以更轻松地检索它并仍然使用$.fn.data()

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

这是a live example

答案 2 :(得分:1)

首先检查$.data(this, "more")

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

否则,如果并非所有元素都包含更多数据,则会收到错误,并且过滤停止。

答案 3 :(得分:1)

问题是当你调用$.data(this, "more")时,只有一个元素会返回对象{moreValue: 750, moreIndex: 4},其余的将返回undefined。然后当你拨打undefined.moreIndex时,你会收到一个错误。尝试这样做:

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