jQuery - 选择具有以...开头的属性名称(非值)的所有元素?

jby*_*yrd 4 javascript jquery css-selectors jquery-selectors custom-data-attribute

假设我正在寻找具有属性'data-language'的所有元素,其值以'java'开头(将匹配'java'和'javascript').我知道怎么做:

$('[data-language^="java"]')
Run Code Online (Sandbox Code Playgroud)

但我的问题是:如何获得具有属性的所有元素(不是属性的值,而是实际的属性名称本身)以某些东西开头?例如:

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

Den*_*ret 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;
 });
Run Code Online (Sandbox Code Playgroud)