使用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}})
答案 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"]');
答案 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;