我的类中有很多div,testimonial
并且我想使用jquery遍历它们以检查每个div是否满足特定条件。如果为真,则应执行一个操作。
有人知道我会怎么做吗?
我的类中有很多div,testimonial
并且我想使用jquery遍历它们以检查每个div是否满足特定条件。如果为真,则应执行一个操作。
有人知道我会怎么做吗?
Answers:
使用每个:' 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
});
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/
更精确:
$.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]
用于querySelectorAll不支持的时间.forEach
。@aabbccsmith