Mam mnóstwo div z klasą testimonial
i chcę użyć jquery, aby przejść przez nie w pętli, aby sprawdzić dla każdego div, czy określony warunek jest spełniony. Jeśli to prawda, powinien wykonać akcję.
Czy ktoś wie, jak bym to zrobił?
Mam mnóstwo div z klasą testimonial
i chcę użyć jquery, aby przejść przez nie w pętli, aby sprawdzić dla każdego div, czy określony warunek jest spełniony. Jeśli to prawda, powinien wykonać akcję.
Czy ktoś wie, jak bym to zrobił?
Odpowiedzi:
Użyj każdego: „ i
” jest pozycją w tablicy, obj
jest iterowanym obiektem DOM (można uzyskać do niego dostęp również przez opakowanie jQuery $(this)
).
$('.testimonial').each(function(i, obj) {
//test
});
Sprawdź referencję interfejsu API, aby uzyskać więcej informacji.
false
spowoduje zatrzymanie iteracji.
$(this)
dostępu do obiektu ... obiekt obj
DOM nie pozwala na przykład na bezpośrednie dołączanie funkcjiobj.empty()
Spróbuj tego...
$('.testimonial').each(function(){
//if statement here
// use $(this) to reference the current div in the loop
//you can try something like...
if(condition){
}
});
break;
nie złamie się. Musisz użyćreturn false;
W dzisiejszych czasach jest to dość proste bez jQuery.
Po prostu wybierz elementy i użyj .forEach()
metody do iteracji nad nimi:
const elements = document.querySelectorAll('.testimonial');
Array.from(elements).forEach((element, index) => {
// conditional logic here.. access element
});
W starszych przeglądarkach:
var testimonials = document.querySelectorAll('.testimonial');
Array.prototype.forEach.call(testimonials, function(element, index) {
// conditional logic here.. access element
});
Wypróbuj ten przykład
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>
Kiedy chcemy uzyskać dostęp do tych, divs
które mają data-index
więcej niż 2
wtedy, potrzebujemy tej jquery.
$('div[class="testimonial"]').each(function(index,item){
if(parseInt($(item).data('index'))>2){
$(item).html('Testimonial '+(index+1)+' by each loop');
}
});
możesz to zrobić w ten sposób
$('.testimonial').each(function(index, obj){
//you can use this to access the current item
});
Funkcja .eq () jQuery może pomóc ci przechodzić przez elementy z podejściem indeksowanym.
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)
.
Dzięki prostej pętli for:
var testimonials= $('.testimonial');
for (var i = 0; i < testimonials.length; i++) {
// Using $() to re-wrap the element.
$(testimonials[i]).text('a');
}
Bez aktualizacji jQuery
document.querySelectorAll('.testimonial').forEach(function (element, index) {
element.innerHTML = 'Testimonial ' + (index + 1);
});
<div class="testimonial"></div>
<div class="testimonial"></div>
Być może brakuje mi części pytania, ale wierzę, że możesz po prostu to zrobić:
$('.testimonial').each((index, element) => {
if (/* Condition */) {
// Do Something
}
});
Wykorzystuje każdą metodę jQuery: https://learn.jquery.com/using-jquery-core/iterating/
Bardziej dokładnie:
$.each($('.testimonal'), function(index, value) {
console.log(index + ':' + value);
});
W JavaScript ES6 .forEach ()
nad podobną do tablicy kolekcją NodeList podaną przezElement.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()
wystarczy?
[...ArrayLike]
był używany dla zapytania czasowego SelectorAll nie miał obsługi .forEach
. @aabbccsmith
Możesz użyć metody jQuery $ each, aby przeglądać wszystkie elementy ze świadectwem klasy. i => to indeks elementu w kolekcji, a val daje obiekt tego konkretnego elementu i możesz użyć „val”, aby uzyskać dostęp do właściwości tego elementu i sprawdzić swój stan.
$.each($('.testimonal'), function(i, val) {
if(your condition){
//your action
}
});