Javascript 带有data-*属性的jQuery选择器
我试图实现一个jQuery选择器,它选择所有具有数据xy-*属性的元素。如果我们知道完整数据属性,我知道如何选择元素: $[data-xy-a]将提供具有数据属性data-xy-a的所有元素 我的问题是元素可以有任何值,而不是a。我想要像这样的东西:Javascript 带有data-*属性的jQuery选择器,javascript,jquery,html,html5-data,Javascript,Jquery,Html,Html5 Data,我试图实现一个jQuery选择器,它选择所有具有数据xy-*属性的元素。如果我们知道完整数据属性,我知道如何选择元素: $[data-xy-a]将提供具有数据属性data-xy-a的所有元素 我的问题是元素可以有任何值,而不是a。我想要像这样的东西: $("[data-xy-*]") 据我所知,没有选择器,但你可以自己过滤掉 $.expr[':'].dataStartsWith = function (elem, index, not) { var data = $(elem).data(
$("[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")');
请记住,数据属性名称在dataset中转换为camelcase,因此要匹配data-xy-z-*您需要使用$':dataStartsWithxyZ' 可能的重复项我可以获得具有.data的数据属性列表,但我需要具有数据xy-*属性的元素。是的,我可以遍历.data列表并检查以xy开头的键,但是还有其他简单的解决方案吗?@DvS:因为我不是根据值来选择的。我正在寻找一个自定义键选择,就像我必须使用自己的函数作为选择器一样