web-dev-qa-db-ja.com

同じクラスを持つ要素をループするjQuery

私はクラスtestimonialを持つdivをたくさん持っています、そして私は特定の条件が真であるかどうか各divをチェックするためにそれらをループするためにjqueryを使いたいです。それが本当なら、それは行動を実行するべきです。

誰もが私がこれを行う方法を知っていますか?

496
geoffs3310

それぞれを使用します。 'i'は配列内の位置です。objは反復しているDOMオブジェクトです(jQueryラッパー$(this)からもアクセスできます)。

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

詳細については apiの参照 を確認してください。

903
Kees C. Bakker

これを試して...

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


    if(condition){

    }


 });
108
stephen776

最近jQueryを使わずにこれを行うのはとても簡単です。

JQueryがない場合

要素を選択し、 .forEach()メソッド を使ってそれらを繰り返すだけです。

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

この例を試してください

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>

data-index2より大きいdivsにアクセスしたい場合は、このjqueryが必要です。

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

実用例フィドル

39
Manoj

あなたはそれをこうすることができます

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

jQuery .eq() は、インデックス付きアプローチを使用して要素間を移動するのに役立ちます。

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

.filter を使ってこれを簡潔に行うことができます。次の例では、 "something"という単語を含むすべての.testimonial divが非表示になります。

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

単純なforループを使うと:

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

私は質問の一部を見逃しているかもしれませんが、私はあなたが単にこれをすることができると信じます:

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

jQueryのアップデートなし

document.querySelectorAll('.testimonial').forEach(function (element, index) {
    element.innerHTML = 'Testimonial ' + (index + 1);
});
<div class="testimonial"></div>
<div class="testimonial"></div>
7
KrisInception
$('.testimonal').each(function(i,v){
  if (condition) {
    doSomething();
  }
});
6
davin

より正確な:

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

JavaScriptでは ES6 を使用する spread ...演算子

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

Element.querySelectorAll()で与えられる array-like コレクションの上

[...document.querySelectorAll('.testimonial')].forEach( el => {
  el.style.color = 'red';
  const stuff = `Element ${el.tagName} with ID #${el.id} says: ${el.textContent}`; 
  console.log( stuff );
});
<p class="testimonial" id="1">This is some text</p>

<div class="testimonial" id="2">Lorem ipsum</div>
2
Roko C. Buljan