2013-05-31 4 views
0

как выбрать базу объектов на значение атрибута.Найти базу объектов по значению атрибута GENERIC

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> 

ЯШ:

var listofdog = $("[?='dog']"); //find anything with attribute value = dog 
+2

Я не думаю, что для этого есть что-то встроенное. Для чего это сумасшедший дизайн? – Barmar

+3

Для этого вы можете использовать '$ (" * "). Filter (...)', где функция фильтра перечисляет все атрибуты и проверяет, является ли какой-либо из них 'dog'. – Barmar

+0

См. Http://stackoverflow.com/questions/2048720/get-all-attributes-from-a-html-element-with-javascript-jquery для отображения всех атрибутов. – Barmar

ответ

0

Вот что вы можете сделать:

function findElementsByAttributeValue(attrValue) { 
    return $('*').filter(function (_) { 
     var hasAttr = false; 
     $(this.attributes).each(function (_, _) { 
      return !(hasAttr = this.nodeValue === attrValue); 
     }); 
     return hasAttr; 
    }); 
} 

Try:

console.log(findElementsByAttributeValue('dog').length); // outputs 3 

jsFiddle here.

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

Это работает только с одним элементом, он не находит всех элементов, соответствующих критериям. – Barmar

+0

@ Бармар, вы правы, я получил задание неправильно. Ред. –

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); 
}); 
Смежные вопросы