クラスに大量のtestimonial
divがあり、jqueryを使用してそれらをループし、特定の条件がtrueであるかどうかを各divについて確認します。trueの場合、アクションを実行する必要があります。
誰か私がこれをどのように行うか知っていますか?
クラスに大量のtestimonial
divがあり、jqueryを使用してそれらをループし、特定の条件がtrueであるかどうかを各divについて確認します。trueの場合、アクションを実行する必要があります。
誰か私がこれをどのように行うか知っていますか?
回答:
それぞれを使用: ' i
'は配列内の位置であり、obj
反復するDOMオブジェクトです(jQueryラッパーからもアクセスできます$(this)
)。
$('.testimonial').each(function(i, obj) {
//test
});
詳細については、APIリファレンスを確認してください。
false
と反復が停止します。
$(this)
オブジェクトへのアクセスを提案するための+1 ... obj
DOMオブジェクトであるため、たとえば関数を直接アタッチすることはできませんobj.empty()
これを試して...
$('.testimonial').each(function(){
//if statement here
// use $(this) to reference the current div in the loop
//you can try something like...
if(condition){
}
});
break;
壊れることはありません。使用する必要がありますreturn false;
最近、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
});
この例を試してください
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');
}
});
jQueryの.eq()は、インデックス付きアプローチで要素をトラバースするのに役立ちます。
var testimonialElements = $(".testimonial");
for(var i=0; i<testimonialElements.length; i++){
var element = testimonialElements.eq(i);
//do something with element
}
divs = $('.testimonial')
for(ind in divs){
div = divs[ind];
//do whatever you want
}
$(ind)
です。
単純なforループの場合:
var testimonials= $('.testimonial');
for (var i = 0; i < testimonials.length; i++) {
// Using $() to re-wrap the element.
$(testimonials[i]).text('a');
}
jQueryが更新されていない
document.querySelectorAll('.testimonial').forEach(function (element, index) {
element.innerHTML = 'Testimonial ' + (index + 1);
});
<div class="testimonial"></div>
<div class="testimonial"></div>
質問の一部が欠けているかもしれませんが、これは簡単にできると思います。
$('.testimonial').each((index, element) => {
if (/* Condition */) {
// Do Something
}
});
これは、jQueryの各メソッドを使用します。https://learn.jquery.com/using-jquery-core/iterating/
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()
十分でしょうか?
[...ArrayLike]
querySelectorAllがをサポートしていなかった時期に使用されました.forEach
。@aabbccsmith