我需要根据存储在元素.data()
对象中的值来选择元素。至少,我想使用选择器来选择顶级数据属性,也许像这样:
$('a').data("category","music");
$('a:data(category=music)');
或者选择器将采用常规属性选择器格式:
$('a[category=music]');
或采用属性格式,但带有说明符以指示其位于.data()
:
$('a[:category=music]');
我发现James Padolsey的实现看起来很简单,但是很好。该页面上显示的镜像方法上方的选择器格式。还有这个Sizzle补丁。
出于某种原因,我记得有一阵子,jQuery 1.4将支持对jquery .data()
对象中的值的选择器。但是,现在我正在寻找它,所以找不到了。也许这只是我看到的功能要求。有对此的支持,我只是没有看到?
理想情况下,我想使用点表示法在data()中支持子属性。像这样:
$('a').data("user",{name: {first:"Tom",last:"Smith"},username: "tomsmith"});
$('a[:user.name.first=Tom]');
我还想支持多个数据选择器,在其中只能找到具有所有指定数据选择器的元素。常规jquery多重选择器执行OR操作。例如,$('a.big, a.small')
选择a
具有class big
或的标签small
。我正在寻找AND,也许是这样的:
$('a').data("artist",{id: 3281, name: "Madonna"});
$('a').data("category","music");
$('a[:category=music && :artist.name=Madonna]');
最后,如果可以在数据选择器上使用比较运算符和正则表达式功能,那就太好了。这样$(a[:artist.id>5000])
有可能。我意识到我可能可以使用来完成很多工作filter()
,但是拥有一个简单的选择器格式会很好。
有哪些解决方案可以做到这一点?Jame's Padolsey目前是最好的解决方案吗?我主要关心的是性能,还涉及子特性点表示法和多个数据选择器等额外功能。是否有其他支持这些功能或在某种程度上更好的实现?