按自定义数据属性值查找元素

我想知道是否有一种方法可以根据jQuery(+ jQuery UI lib)的数据属性值使用javascript选择一个项目(div,span,等等..)。 例如,假设我有:

Hi

然后我为它分配一些数据:

 $('.b').data('myKey', 1234); 

然后,我想找到满足条件myKey = 1234的div(或多个div)。 例如,像这样:

 var resultingElement = $('.b:data(myKey=1234)'); 

默认是可能的,还是我必须自己实现这种选择器? 不,我不想为此使用HTML5的可见数据 – *属性。

您可以创建一个自定义伪选择器以简化操作: http : //jsfiddle.net/g2xKB/1/ 。

 $.expr.pseudos.data = $.expr.createPseudo(function(args) { var items = args.split(","); // the arguments (key, value) $.each(items, function(i, item) { item = item.trim(); var isString = /^['"]|['"]$/.test(item); item = item.replace(/^['"]|['"]$/g, ""); // remove quotes if(!isString) { item = +item; // if no quotes, it's a number } items[i] = item; }); return function(elem) { return $.data(elem, items[0]) === items[1]; } }); 

然后您可以按如下方式使用它:

 $(".b:data('myKey', 1234)").css("color", "red"); 

试试这个

  $("div.b").filter(function() { return $.data(this, "myKey") == 1234; }); 
 var resultingElement = $('.b[data-myKey=1234]'); 

我不确定100%肯定,但我认为在某些时候数据属性中存在驼峰式选择器的问题。