如何根据属性值选择对象。
HTML:
<li abc='dog'>a</li>
<a def='cat'>b</a>
<span ghi='cat'>c</span>
<b jkl='dog'>d</b>
<u mno='dog'>e</u>
<div pqr='cow'>f</div>
JS:
var listofdog = $("[?='dog']"); //find anything with attribute value = dog
答案 0 :(得分:0)
您必须获取所有属性的数组,并迭代它们。
var elem = document.getElementsByTagName('*');
for(var j = 0; j < elem.length; j++) {
var attr = elem[j].attributes;
for(var i = 0; i < attr.length; i++) {
if(attr[i].value == 'dog')
// do something with elem[j]
}
}
答案 1 :(得分:0)
这是你可以做的事情:
function findElementsByAttributeValue(attrValue) {
return $('*').filter(function (_) {
var hasAttr = false;
$(this.attributes).each(function (_, _) {
return !(hasAttr = this.nodeValue === attrValue);
});
return hasAttr;
});
}
尝试:
console.log(findElementsByAttributeValue('dog').length); // outputs 3
答案 2 :(得分:0)
此代码基于@Barmar评论。尚未测试。 投票,如果工作。
var value_to_find = "dog";
$("*").filter(function(){
function has_attr_value(obj, value){
var listofattr = $(obj).attributes;
if (listofattr.length > 0){
var has_attr = false;
$.each(listofattr,function(){
if (this.value == value){
has_attr = true;
return;
}
});
return has_attr;
}
else{
return false;
}
}
return has_attr_value(this,value_to_find);
});