jQuery para percorrer os elementos com a mesma class

Eu tenho uma carga de divs com o testimonial class e eu quero usar jquery para percorrê-los para verificar cada div se uma condição específica é verdadeira. Se for verdade, deve executar uma ação.

Alguém sabe como eu faria isso?

Use each: ‘ i ‘ é a posição na matriz, obj é o object DOM que você está iterando (também pode ser acessado através do wrapper $(this) da jQuery $(this) ).

 $('.testimonial').each(function(i, obj) { //test }); 

Verifique a referência da API para mais informações.

tente isso …

 $('.testimonial').each(function(){ //if statement here // use $(this) to reference the current div in the loop //you can try something like... if(condition){ } }); 

É muito simples fazer isso sem jQuery nos dias de hoje.

Sem jQuery:

Basta selecionar os elementos e usar o método .forEach() para iterar sobre eles:

 var testimonials = document.querySelectorAll('.testimonial'); Array.prototype.forEach.call(testimonials, function(elements, index) { // conditional here.. access elements }); 

Experimente este exemplo

Html

 
Testimonial 1
Testimonial 2
Testimonial 3
Testimonial 4
Testimonial 5

Quando queremos acessar esses divs que tem data-index maior que 2 , precisamos desse jquery.

 $('div[class="testimonial"]').each(function(index,item){ if(parseInt($(item).data('index'))>2){ $(item).html('Testimonial '+(index+1)+' by each loop'); } }); 

Violino de exemplo de trabalho

você pode fazer assim

 $('.testimonial').each(function(index, obj){ //you can use this to access the current item }); 
 divs = $('.testimonial') for(ind in divs){ div = divs[ind]; //do whatever you want } 

Você pode fazer isso de forma concisa usando .filter . O exemplo a seguir ocultará todos os divs .testimonial contendo a palavra “alguma coisa”:

 $(".testimonial").filter(function() { return $(this).text().toLowerCase().indexOf("something") !== -1; }).hide(); 

O eq () do jQuery pode ajudá-lo a percorrer elementos com uma abordagem indexada.

 var testimonialElements = $(".testimonial"); for(var i=0; i 

Eu posso estar perdendo parte da questão, mas acredito que você pode simplesmente fazer isso:

 $('.testimonial').each(function() { if(...Condition...) { ...Do Stuff... } } 

Sem jQuery atualizado

 document.querySelectorAll('.testimonial').forEach(function (element, index) { element.innerHTML = 'Testimonial ' + (index + 1); }); 
 
 $('.testimonal').each(function(i,v){ if (condition) { doSomething(); } }); 

Com um loop for simples:

 var testimonials= $('.testimonial'); for (var i = 0; i < testimonials.length; i++) { // Using $() to re-wrap the element. $(testimonials[i]).text('a'); } 

Mais preciso:

 $.each($('.testimonal'), function(index, value) { console.log(index + ':' + value); }); 

Em JavaScript ES6 usando o operador spread ...

 [...document.querySelectorAll('.testimonial')].forEach( el => { el.style.color = 'red'; }); 

sobre uma coleção semelhante a matriz dada por Element.querySelectorAll()

 [...document.querySelectorAll('.testimonial')].forEach( el => { el.style.color = 'red'; const stuff = `Element ${el.tagName} with ID #${el.id} says: ${el.textContent}`; console.log( stuff ); }); 
 

This is some text

Lorem ipsum