동일한 클래스의 요소를 반복하는 jQuery


581

클래스에 div가 많이 있으며 testimonialjquery를 사용하여 특정 조건이 true 인 경우 각 div를 확인하기 위해 루프를 반복하고 싶습니다. 사실이면 조치를 수행해야합니다.

내가 어떻게 할 것인지 아는 사람 있습니까?

답변:


1051

' i'는 배열의 위치이며 obj반복하는 DOM 객체입니다 (jQuery 래퍼 $(this)를 통해 액세스 할 수도 있음 ).

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

자세한 내용 은 API 참조 를 확인하십시오.


2
i, obj 매개 변수를 사용하면 많은 도움이됩니다. 각각이 사용 된 경우 반복되지 않았습니다.
darwindeeds

2
@Darwindeeds 맞습니다! 이 함수는 실제 반복자가 각 항목을 처리하는 데 사용됩니다. 리턴 false하면 반복이 중지됩니다.
Kees C. Bakker

138
"obj"는 dom 객체이고 $ (this)는 jQuery 객체입니다.
AndreasT

그 요소의 길이를 얻기 위해 jQuery (this 'ul li'). length를 할 수 있습니까?
techie_28

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
이것이 실제로 가장 효율적인 접근법입니다.
Amin Setayeshfar

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

하지만 jquery 객체는 제공하지 않지만 dom 요소 만
celwell

1
@celwell은 jQuery가 당신을 위해 모든 것을 할 것으로 기대할 수 없습니다. 그것은 당신 자신의 jQuery Object를 만드는 문제입니다 $(ind).
GoldBishop

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>


거의 같은 대답은 이미 여기에, 나는 당신이 기존 수정해야한다고 생각
올레 Rybalchenko


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

4

더 정확하게:

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

보다 기능적인 관점에서 읽기 / 쓰기를 좋아하는 경우에 좋습니다.
Sgnl

4

JavaScript ES6에서 .forEach () 는 다음 과 같이 배열과 같은 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
Roko C. Buljan

2

jQuery $ each 메소드를 사용하여 클래스 평가가있는 모든 요소를 ​​반복 할 수 있습니다. i =>는 콜렉션에있는 요소의 색인이며 val은 해당 특정 요소의 오브젝트를 제공하며 "val"을 사용하여 요소의 특성에 추가로 액세스하고 조건을 점검 할 수 있습니다.

$.each($('.testimonal'), function(i, val) { 
    if(your condition){
       //your action
    }
});
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.