按自定义数据属性值查找元素
我想知道是否有一种方法可以根据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%肯定,但我认为在某些时候数据属性中存在驼峰式选择器的问题。