我需要根据元素的 .data()
对象中存储的值来选择元素。至少,我希望使用选择器选择顶级数据属性,比如:
$('a').data("category","music");
$('a:data(category=music)');
或者,选择器可能采用常规属性选择器格式:
$('a[category=music]');
或者是属性格式,但是有一个说明符来表明它是在 .data()
中:
$('a[:category=music]');
我发现 詹姆斯・帕多尔西的实现看起来很简单,但是很好。该页面上显示的上述镜像方法的选择器格式。还有这个 时髦贴片。
出于某种原因,我记得前段时间读到过,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')
选择具有类 big
或 small
的 a
标记。我在寻找一个 AND,也许像这样:
$('a').data("artist",{id: 3281, name: "Madonna"});
$('a').data("category","music");
$('a[:category=music && :artist.name=Madonna]');
最后,如果比较运算符和正则表达式特性可用于数据选择器,那将是非常好的。所以 $(a[:artist.id>5000])
是可能的。我意识到我可以使用 filter()
来完成大部分工作,但是最好有一个简单的选择器格式。
有什么解决方案可以做到这一点?詹姆斯的帕多尔西是目前最好的解决方案吗?我关心的主要是性能,但也包括额外的特性,如子属性点符号和多个数据选择器。是否有其他实现支持这些东西,或者在某些方面更好?