我正在尝试实现一个 jQuery 选择器,它选择所有具有 data-xy-* 属性的元素。如果我们知道完整的数据属性,我知道如何选择元素:
$("[data-xy-a]")
会给我所有具有数据属性的元素data-xy-a
我的问题是元素可以有任何值而不是a
. 我想要类似的东西:
$("[data-xy-*]")
我正在尝试实现一个 jQuery 选择器,它选择所有具有 data-xy-* 属性的元素。如果我们知道完整的数据属性,我知道如何选择元素:
$("[data-xy-a]")
会给我所有具有数据属性的元素data-xy-a
我的问题是元素可以有任何值而不是a
. 我想要类似的东西:
$("[data-xy-*]")
没有选择器(据我所知),但你可以自己过滤掉它们......
$.expr[':'].dataStartsWith = function (elem, index, not) {
var data = $(elem).data();
return Object.keys(data).some(function (key) {
return key.indexOf(not[3]) === 0;
});
};
$(':dataStartsWith("xy")');
请记住,数据属性名称在数据集中转换为驼峰式,以便匹配data-xy-z-*
您需要使用$(':dataStartsWith("xyZ")');