我想知道是否有办法根据jQuery(+ jQuery UI lib)的数据属性值使用javascript选择一个项目(div,span,等等..)。例如,假设我有:
<div class="b">Hi</div>
然后我为它分配了一些数据:
$('.b').data('myKey', 1234);
然后,我想找到满足条件myKey = 1234的div(或多个div)。 例如,像这样:
var resultingElement = $('.b:data(myKey=1234)');
默认是可行的,还是我必须自己实现这种选择器? 不,我不想为此使用HTML5的可见数据 - *属性。
答案 0 :(得分:3)
您可以创建自定义伪选择器以简化操作: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");
答案 1 :(得分:1)
试试这个
$("div.b").filter(function() {
return $.data(this, "myKey") == 1234;
});
答案 2 :(得分:0)
var resultingElement = $('.b[data-myKey=1234]');
我不确定100%肯定,但我认为在某些时候数据属性中存在驼峰式选择器的问题。