如何使用 JQuery 搜索具有特定属性值的元素,而不考虑属性标记?
喜欢:
$("[*='myvalue']")
应该找到
<a href="target.html" target="myvalue">...
<tr change="myvalue">...
第一个,因为“target”属性,第二个为“change”属性。
有比遍历所有属性更好的解决方案吗?
最佳答案
您可以使用自定义伪选择器来过滤属性。
下面是jQuery方式。
$.expr[":"].attrFilter = function(elem, index, val){
var len = $(elem.attributes).filter(function () {
return this.value === val[3];
}).length;
if (len > 0) {
return elem;
}
};
$('body *:attrFilter("value")').hide();
$.expr[":"].attrFilter
是自定义选择器的扩展机制。您也可以传递一个参数。
语法:
$.expr[':'].selector = function(elem, index, match) {
}
elem
是当前DOM元素index
为elem的索引match
是一个数组,里面包含了关于自定义的所有信息 选择器,其中传递的参数位于第 3 个索引处。 ( Reference 1 , Reference 2 )match[0]
– 包含完整的伪类选择器调用。在这个例子中:attrFilter("value")
match[1]
– 仅包含选择器名称。在这个例子中attrFilter
match[2]
– 表示在参数表达式中使用了哪种类型的引号(如果有)。即单(')或双(“)。在这个 例如它将是空的。match[3]
– 为我们提供参数,即括号中包含的内容。在这个例子中`值
关于javascript - JQuery 选择器使用值,但属性未知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30840320/