Question jQuery pour faire défiler des éléments de la même classe


J'ai une charge de divs avec la classe testimonial et je veux utiliser jquery pour faire une boucle à travers eux pour vérifier chaque div si une condition spécifique est vraie. Si c'est vrai, il devrait effectuer une action.

Est-ce que quelqu'un sait comment je ferais cela?


429
2018-01-19 12:41


origine


Réponses:


Utilisez chacun: 'i'est la position dans le tableau, obj est l'objet DOM que vous itérez (accessible via le wrapper jQuery) $(this) ainsi que).

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

Vérifier la référence d'api pour plus d'informations.


782
2018-01-19 12:43



essaye ça...

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


    if(condition){

    }


 });

103
2018-01-19 12:43



C'est assez simple de le faire sans jQuery ces jours-ci.

Sans jQuery:

Sélectionnez simplement les éléments et utilisez le .forEach() méthode pour les parcourir:

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

37
2018-01-23 04:07



Essayez cet exemple

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>

Quand on veut accéder à ceux divs qui a data-index plus grand que 2 alors nous avons besoin de cette jquery.

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

Exemple de travail de violon


33
2018-04-13 07:08



vous pouvez le faire de cette façon

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

26
2018-01-19 12:44



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

16
2018-01-19 12:45



Vous pouvez le faire de manière concise en utilisant .filter. L'exemple suivant cachera tous les div .testimonial contenant le mot "truc":

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

13
2018-01-19 12:53



Le .eq de jQuery () peut vous aider à parcourir des éléments avec une approche indexée.

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

13
2017-12-09 06:02