【问题标题】:jQuery - select all elements with attribute name (not value) beginning with...?jQuery - 选择属性名称(不是值)以...开头的所有元素?
【发布时间】:2013-09-28 14:07:43
【问题描述】:

假设我正在寻找具有属性“数据语言”的所有元素,其值以“java”开头(将匹配“java”和“javascript”)。我知道该怎么做:

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

但我的问题是:如何获取所有具有属性的元素(不是属性的值,而是实际的属性名称本身) ?例如:

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

【问题讨论】:

  • 我想我们都误读了这个,你想找到所有属性以data-开头的元素,所以,你希望所有元素都包含自定义数据属性,是吗?
  • 是的,完全正确!抱歉,我知道它怎么可能被误读了。
  • 我认为那些粗体字意味着一些重要的东西:)
  • 哈哈 - 好的,我已经更新了问题 - 希望现在更清楚一点。
  • “我知道如何获取属性值以某事物开头的所有元素:$('[data-size^="value"]') 那不会。

标签: javascript jquery jquery-selectors css-selectors custom-data-attribute


【解决方案1】:

没有捷径,你可以使用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;
 });

【讨论】:

    【解决方案2】:

    jQuery 有一个很好的功能。

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

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

    【讨论】:

    • 但这是特定元素的数据属性。我想选择所有具有数据属性的元素。
    • 是的,在回答和重读之后,我意识到这不是你要找的我相信@dystroy 适合你
    • $('div').filter(function () { return !$.isEmptyObject($(this).data()) }) 应该满足您的需求,匹配任何具有某些数据属性的 DIV
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    • 2011-04-07
    • 1970-01-01
    • 2017-05-26
    • 2014-05-30
    相关资源
    最近更新 更多