1

我正在尝试实现一个 jQuery 选择器,它选择所有具有 data-xy-* 属性的元素。如果我们知道完整的数据属性,我知道如何选择元素:

$("[data-xy-a]")会给我所有具有数据属性的元素data-xy-a

我的问题是元素可以有任何值而不是a. 我想要类似的东西:

$("[data-xy-*]")
4

1 回答 1

0

没有选择器(据我所知),但你可以自己过滤掉它们......

$.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")');

于 2014-09-17T19:41:25.147 回答