jQuery - 选择所有属性名以...开头的元素?

4

假设我要查找所有带有属性"data-language"的元素,其值以'java'开头(将匹配'java'和'javascript')。我知道如何实现:

$('[data-language^="java"]')

我的问题是:如何获取所有具有属性(不是属性值,而是实际的属性名称)以某个内容开头的元素?例如:

  1. 所有属性名称以“data-s”开头的元素,或
  2. 所有具有数据属性的元素(以“data-”开头的属性)。

1
我认为我们都误读了这个问题,你想要找到所有具有以“data-”开头的属性的元素,因此,你想要包含自定义数据属性的所有元素,是吗? - tymeJV
2
我想那些加粗的单词肯定有重要的含义 :) - tymeJV
我知道如何获取所有具有以某个值开头的属性值的元素:$('[data-size^="value"]')。但这样做不会实现该目的。 - j08691
@j08691 你是什么意思?在这个例子中,属性的名称是"data-size"。 - Denys Séguret
@dystroy - 这句话让人觉得它会匹配所有以"value"开头的属性,但实际上它只会匹配值以"value"开头的"data-size"属性。在这个句子中,“一个属性”应该改为“一个数据大小属性”。 - j08691
显示剩余2条评论
2个回答

9

没有捷径,您可以使用 attributes 集合:

 $(someselector).filter(function(){
      var attrs = this.attributes;
      for (var i=0; i<attrs.length; i++) {
          if (attrs[i].name.indexOf("someStartOfName")==0) return true;
      }         
      return false;
 });

0
jQuery有一个很好的函数可以实现这个功能。

http://api.jquery.com/data/

$("div").data() // returns all data attributes to this div

但这是特定元素的数据属性。我想选择所有具有数据属性的元素。 - jbyrd
是的,在回答和重新阅读后,我意识到这不是您要寻找的内容。我相信@dystroy已经为您解决了问题。 - j0hnstew
2
$('div').filter(function () { return !$.isEmptyObject($(this).data()) }) 可以满足您的需求,匹配任何带有数据属性的 DIV 元素。 - A. Wolff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接