在字符串化数据属性中获取具有特定值的元素

时间:2012-03-08 10:52:48

标签: jquery

示例:

<div data-object="{ 'foo' : 123 }"></div>
<div data-object="{ 'foo' : 456 }"></div>

找到foo值为123的div的最快方法是什么?目前我循环遍历div,将字符串化的对象转换为js对象并检查foo值是否等于123?这可以在没有循环的情况下完成吗?感谢

3 个答案:

答案 0 :(得分:2)

您可以使用filter()

var divs = $("div").filter(function() {
    var data = $.parseJSON($(this).data("object"));
    return data.foo == 123;
});

这仍然在内部使用循环。

答案 1 :(得分:1)

使用jquery选择器

 function getdiv(id) {
              var divs = $('div[data-bh="{"foo":' + id + '}"]');
          }

答案 2 :(得分:0)

你不需要parseJson,这应该工作

var divs = $("div").filter(function() {return $(this).data("object").foo == 123;});

阅读结尾以查看更多示例,http://www.elijahmanor.com/2012/03/find-jquery-bug-5-defective-data.html

但正如@Rory所提到的,这确实在内部使用了循环