我有一个非常具体的查询,如何找到具有特定属性的所有元素。
我的元素具有遵循特定模式的属性,以下是一些示例:
<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/