jQuery:按数据过滤并不起作用

时间:2015-03-21 07:28:31

标签: jquery filter

我为小游戏做了很多图片。 在每个图像中,我使用此建议here

通过函数存储整数

像这样:

for (var idx=0; idx<jeu.length; idx++) {
    $('#jeu').append(
        $('<img />').data('idx', idx)
    );
}

然后我检查我可以手动检索它&#34;:

> $('img')[11]
<img src="imgs/bleu.gif" />
> $($('img')[11]).data()
Object {idx: 5}

现在,如果我尝试通过data过滤器检索对象,那么它无法正常工作:

> $('img[data-idx="Object {idx: 5}"]')
[]
> $('img[data-idx="idx: 5"]')
[]

这样做的方法是什么?

2 个答案:

答案 0 :(得分:1)

您正在使用数据api来设置值,这不会更新元素属性,在这种情况下您可以使用.filter()

$('img').filter(function () {
    return $(this).data('idx') == 5
})

另一种选择是使用属性

('<img />').attr('data-idx', idx)

然后

$('img[data-idx="5"]')

答案 1 :(得分:0)

尝试

&#13;
&#13;
$("body").data("idx", 5);

var filterdata = function(key, val) {
  return $.map($("*"), function(el, i) {
    return $.data(el, key) === val ? $.data(el) : null
  })[0]
};

console.dir(filterdata("idx", 5));
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<div></div>
&#13;
&#13;
&#13;