Home » Jquery » jQuery to loop through elements with the same class

jQuery to loop through elements with the same class

Posted by: admin November 2, 2017 Leave a comment

Questions:

I have a load of divs with the class testimonial and I want to use jquery to loop through them to check for each div if a specific condition is true. If it is true, it should perform an action.

Does anyone know how I would do this?

Answers:

Use each: ‘i‘ is the postion in the array, obj is the DOM object that you are iterating (can be accessed through the jQuery wrapper $(this) as well).

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

Check the api reference for more information.

Questions:
Answers:

try this…

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


    if(condition){

    }


 });

Questions:
Answers:

It’s pretty simple to do this without jQuery these days.

Without jQuery:

Just select the elements and use the .forEach() method to iterate over them:

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

Questions:
Answers:

Try this example

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>

When we want to access those divs which has data-index greater than 2 then we need this jquery.

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

Working example fiddle

Questions:
Answers:

you can do it this way

$('.testimonial').each(function(index, obj){
    //you can use this to access the current item
});

Questions:
Answers:
divs  = $('.testimonial')
for(ind in divs){
  div = divs[ind];
  //do whatever you want
}

Questions:
Answers:

You can do this concisely using .filter. The following example will hide all .testimonial divs containing the word “something”:

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

Questions:
Answers:

jQuery’s .eq() can help you traverse through elements with an indexed approach.

var testimonialElements = $(".testimonial");
for(var i=0; i<testimonialElements.length; i++){
    var element = testimonialElements.eq(i);
    //do something with element
}

Questions:
Answers:

I may be missing part of the question, but I believe you can simply do this:

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

Questions:
Answers:
$('.testimonal').each(function(i,v){
  if (condition) {
    doSomething();
  }
});

Questions:
Answers:

More precise:

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

Questions:
Answers:

With a simple for loop:

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

Questions:
Answers:

Without jQuery updated

document.querySelectorAll('.testimonial').forEach(function (element, index) {
    element.innerHTML = 'Testimonial ' + (index + 1);
});
<div class="testimonial"></div>
<div class="testimonial"></div>