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


582

クラスに大量のtestimonialdivがあり、jqueryを使用してそれらをループし、特定の条件がtrueであるかどうかを各divについて確認します。trueの場合、アクションを実行する必要があります。

誰か私がこれをどのように行うか知っていますか?

回答:


1052

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

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

詳細については、APIリファレンスを確認してください。


2
i、objパラメータを持つ関数は、非常に役立ちます。それぞれが使用された場合、それは繰り返しではありませんでした。
darwindeeds

2
@Darwindeeds正解です!この関数は、実際のイテレーターが各項目を処理するために使用されます。戻るfalseと反復が停止します。
キースC.バッカー

138
$(this)がjQueryオブジェクトであるのに対して、 "obj"はdomオブジェクトになることを指摘する価値があります。
AndreasT 2012

要素の長さを取得するためにjQuery(this 'ul li')。lengthを実行することはできませんul li?
techie_28 2012

16
$(this)オブジェクトへのアクセスを提案するための+1 ... objDOMオブジェクトであるため、たとえば関数を直接アタッチすることはできませんobj.empty()
Fr0zenFyr

127

これを試して...

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


    if(condition){

    }


 });

4
参考:break;壊れることはありません。使用する必要がありますreturn false;
Kolob Canyon、

53

最近、jQueryなしでこれを行うのは非常に簡単です。

jQueryなし:

要素を選択し、.forEach()メソッドを使用してそれらを反復するだけです。

const elements = document.querySelectorAll('.testimonial');
Array.from(elements).forEach((element, index) => {
  // conditional logic here.. access element
});

古いブラウザ:

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

42

この例を試してください

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>

我々がアクセスするために、これらたいときにdivs持っていたdata-indexよりも大きく2、その後、我々は、このjqueryのを必要としています。

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

実例フィドル


29

あなたはこの方法でそれを行うことができます

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

18

jQueryの.eq()は、インデックス付きアプローチで要素をトラバースするのに役立ちます。

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

1
これは確かに最も効率的なアプローチです。
アミンSetayeshfar 2017年

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

ただし、jqueryオブジェクトは提供されず、dom要素のみが表示されます
セルウェル2014

1
@celwellは、jQueryがすべてを実行することを期待できません。独自のjQueryオブジェクトを作成するだけ$(ind)です。
GoldBishop 2017年

14

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

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

10

単純なforループの場合:

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

8

jQueryが更新されていない

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


ほぼ同じ答えがすでにここにあります。既存のものを編集する必要があると思います
Oleh Rybalchenko


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

4

より正確な:

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

これは、より機能的な観点から読み書きを行う場合に便利です。
Sgnl 2017

4

JavaScript ES6 では配列のような NodeListコレクションに対して次のように指定されます。Element.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()十分でしょうか?
aabbccsmith

ありがとうございました。もちろんです。[...ArrayLike]querySelectorAllがをサポートしていなかった時期に使用されました.forEach。@aabbccsmith
ロコC.ブルジャン

2

jQueryの$ eachメソッドを使用して、クラスtestimonialですべての要素をループできます。i =>はコレクション内の要素のインデックスであり、valはその特定の要素のオブジェクトを提供します。「val」を使用して、要素のプロパティにさらにアクセスし、条件を確認できます。

$.each($('.testimonal'), function(i, val) { 
    if(your condition){
       //your action
    }
});
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.