2015-07-24 6 views
0

Используя jQuery, я хотел бы перебирать только определенные элементы. Сейчас у меня есть этот двойной цикл, который перебирает все элементы DOM, и каждый из их атрибутов:Итерация над выбранными элементами DOM

domElement.find('*').each(function() { //loop over all child elements inside parent 

       $.each(this.attributes, function (i, attrib) { 
        var name = attrib.name; 
        var value = attrib.value; 

       }); 
      }); 

мой вопрос - вместо того, чтобы цикл по всем элементам (*) я могу как-то выбрать набор тегов для перебрать , например, только диапазон, вход, кнопка, форма и т. д.?

Более многословным способом было бы что-то вроде этого:

 domElement.find('*').each(function() { //loop over all child elements inside parent 

       if(this.tagname is in ['span','input','button','form']){ //pseudocode 

        $.each(this.attributes, function (i, attrib) { 
         var name = attrib.name; 
         var value = attrib.value; 


        }); 
       } 
      }); 
+0

Вы пытались заменить '*' на 'span, input, button, form' – Ryan

+3

Конечно. '.find ('span, input, button, form')' будет работать. – jmar777

+0

это сложно для реселлеров Google, поэтому я спросил –

ответ

1

Использование нескольких селекторов: JQuery Documentation.

Я думаю, что в вашем примере код будет таким:

var selectList = $('span, input, button, form'); 
0

Попробуйте это:

$('span,input,button,form').each(function (i, attrib) { 
    var name = attrib.name; 
    var value = attrib.value; 
}); 

Хотя предложение Mouhamed Halloul является лучше, дать им общий класс затем цикл по этому классу:

$('.common-class-name').each(function (i, attrib) { 
    var name = attrib.name; 
    var value = attrib.value; 
});