Eu tenho uma carga de divs com a classe testimonial
e quero usar o jquery para fazer um loop através deles para verificar cada div se uma condição específica for verdadeira. Se for verdade, deve executar uma ação.
Alguém sabe como eu faria isso?
Eu tenho uma carga de divs com a classe testimonial
e quero usar o jquery para fazer um loop através deles para verificar cada div se uma condição específica for verdadeira. Se for verdade, deve executar uma ação.
Alguém sabe como eu faria isso?
Respostas:
Use each: ' i
' é a posição na matriz, obj
é o objeto DOM que você está iterando (também pode ser acessado através do wrapper jQuery $(this)
).
$('.testimonial').each(function(i, obj) {
//test
});
Verifique a referência da API para obter mais informações.
false
interromperá a iteração.
$(this)
para acessar o objeto ... obj
sendo objeto DOM não permite anexar funções diretamente por exemploobj.empty()
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){
}
});
break;
não vai quebrar. Você deve usarreturn false;
É bem simples fazer isso sem o jQuery atualmente.
Basta selecionar os elementos e usar o .forEach()
método para iterar sobre eles:
const elements = document.querySelectorAll('.testimonial');
Array.from(elements).forEach((element, index) => {
// conditional logic here.. access element
});
Em navegadores antigos:
var testimonials = document.querySelectorAll('.testimonial');
Array.prototype.forEach.call(testimonials, function(element, index) {
// conditional logic here.. access element
});
Experimente este exemplo
Html
<div class="testimonial" data-index="1">
Testimonial 1
</div>
<div class="testimonial" data-index="2">
Testimonial 2
</div>
<div class="testimonial" data-index="3">
Testimonial 3
</div>
<div class="testimonial" data-index="4">
Testimonial 4
</div>
<div class="testimonial" data-index="5">
Testimonial 5
</div>
Quando queremos acessar aqueles divs
que são data-index
maiores que o 2
necessário, precisamos desse jquery.
$('div[class="testimonial"]').each(function(index,item){
if(parseInt($(item).data('index'))>2){
$(item).html('Testimonial '+(index+1)+' by each loop');
}
});
você pode fazer assim
$('.testimonial').each(function(index, obj){
//you can use this to access the current item
});
.eq () do jQuery pode ajudá-lo a percorrer elementos com uma abordagem indexada.
var testimonialElements = $(".testimonial");
for(var i=0; i<testimonialElements.length; i++){
var element = testimonialElements.eq(i);
//do something with element
}
divs = $('.testimonial')
for(ind in divs){
div = divs[ind];
//do whatever you want
}
$(ind)
.
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');
}
Sem o jQuery atualizado
document.querySelectorAll('.testimonial').forEach(function (element, index) {
element.innerHTML = 'Testimonial ' + (index + 1);
});
<div class="testimonial"></div>
<div class="testimonial"></div>
Pode estar faltando parte da pergunta, mas acredito que você pode simplesmente fazer isso:
$('.testimonial').each((index, element) => {
if (/* Condition */) {
// Do Something
}
});
Isso usa cada método do jQuery: https://learn.jquery.com/using-jquery-core/iterating/
Mais preciso:
$.each($('.testimonal'), function(index, value) {
console.log(index + ':' + value);
});
No JavaScript ES6 .forEach (),
sobre uma coleção NodeList semelhante a uma matriz, fornecida porElement.querySelectorAll()
document.querySelectorAll('.testimonial').forEach( el => {
el.style.color = 'red';
console.log( `Element ${el.tagName} with ID #${el.id} says: ${el.textContent}` );
});
<p class="testimonial" id="1">This is some text</p>
<div class="testimonial" id="2">Lorem ipsum</div>
doc..torAll.forEach()
seria suficiente?
[...ArrayLike]
foi usado durante o tempo em que querySelectorAll não tinha suporte .forEach
. @aabbccsmith
Você pode usar o jQuery $ each método para percorrer todos os elementos com depoimento de classe. i => é o índice do elemento na coleção e val fornece o objeto desse elemento específico e você pode usar "val" para acessar ainda mais as propriedades do seu elemento e verificar sua condição.
$.each($('.testimonal'), function(i, val) {
if(your condition){
//your action
}
});