Відповіді:
Використовуйте кожне: ' i
' - це позиція в масиві, obj
це об'єкт DOM, який ви повторюєте (можна отримати доступ і через оболонку jQuery $(this)
).
$('.testimonial').each(function(i, obj) {
//test
});
Перегляньте посилання на api для отримання додаткової інформації.
false
зупинить ітерацію.
$(this)
отримати доступ до об'єкта ... 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');
}
});
ви можете це зробити так
$('.testimonial').each(function(index, obj){
//you can use this to access the current item
});
.eq () jQuery's може допомогти вам пройти елементи з індексованим підходом.
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)
.
За допомогою простого циклу:
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/
Точніше:
$.each($('.testimonal'), function(index, value) {
console.log(index + ':' + value);
});
В 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()
буде достатньо?
[...ArrayLike]
використовувався для запиту часуSelectorAll не підтримував .forEach
. @aabbccsmith
Ви можете використовувати jQuery $ кожен метод, щоб проглянути всі елементи з відгуком про клас. i => - індекс елемента в колекції, а val дає вам об'єкт саме цього елемента, і ви можете використовувати "val" для подальшого доступу до властивостей вашого елемента та перевірки свого стану.
$.each($('.testimonal'), function(i, val) {
if(your condition){
//your action
}
});