jquery如何找到根据属性名称搜索的元素

标签 jquery attributes css-selectors

我有一个非常具体的查询,如何找到具有特定属性的所有元素。

我的元素具有遵循特定模式的属性,以下是一些示例:

 <div data-jtemplate-href="x"></div>
 <span data-jtemplate-text="x"></span>
 <input data-jtemplate-something="x"/>
 <table data-jtemplate-else="x"></table>

如您所见,我的所有元素都具有名称带有前缀“data-jtemplate”的属性,如何找到具有属性前缀 data-jtemplate 的所有元素?

最佳答案

创建您自己的表达式,请参阅 http://jsfiddle.net/6pCh4/

$.expr[":"].dataAttrStartingWith = function(el, i, m) {
  for (var p in $(el).data()) {
     if (p.substring(0, m[3].length) === m[3]) return true;    
  }
  return false;
};  


console.log($('body *:dataAttrStartingWith(jtemplate)'))

此表达式将过滤具有 data-jtemplate-* 属性的所有元素(正如您在 fiddle 中看到的那样,我添加了另一个被此过滤器正确丢弃的元素)

当然,这可以使用其他data-*属性进行自定义(只需更改选择器中的jtemplate)

关于jquery如何找到根据属性名称搜索的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10554209/

相关文章:

javascript - 在下拉菜单中单击时从按钮中删除 addClass

Java:如何按属性对对象列表进行排序和分组

java - 标记 <uses-permission> 属性名称具有无效字符 ' '

gwt - 如何使 CSS "~"选择器在 GWT Css 资源中工作

javascript - 保持div的纵横比

jquery - 可以通过键名称获取 jquery .serializeArray() 值吗?

CSS:使用两个相邻的选择器在相邻元素之后选择元素

html - angular2 仅显示带有选择器的 "loading..."

javascript - 使用 Tomcat 引用 Javascript 库

Magento:按属性位置对产品进行排序