ฉันมีตัวหารมากมายกับชั้นเรียนtestimonial
และฉันต้องการใช้ jquery เพื่อวนรอบพวกเขาเพื่อตรวจสอบแต่ละ div ว่าเงื่อนไขที่เฉพาะเจาะจงเป็นจริงหรือไม่ หากเป็นจริงควรดำเนินการ
ไม่มีใครรู้ว่าฉันจะทำเช่นนี้?
ฉันมีตัวหารมากมายกับชั้นเรียนtestimonial
และฉันต้องการใช้ jquery เพื่อวนรอบพวกเขาเพื่อตรวจสอบแต่ละ div ว่าเงื่อนไขที่เฉพาะเจาะจงเป็นจริงหรือไม่ หากเป็นจริงควรดำเนินการ
ไม่มีใครรู้ว่าฉันจะทำเช่นนี้?
คำตอบ:
ใช้แต่ละรายการ: ' i
' คือตำแหน่งในอาร์เรย์obj
เป็นวัตถุ DOM ที่คุณกำลังวนซ้ำ (สามารถเข้าถึงได้ผ่านทาง wrapper 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's .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)
มันเป็นเรื่องของการทำให้วัตถุ jQuery ของคุณเอง
.filter
คุณสามารถทำได้โดยใช้รัดกุม ตัวอย่างต่อไปนี้จะซ่อน Divs คำรับรองทั้งหมดที่มีคำว่า "some":
$(".testimonial").filter(function() {
return $(this).text().toLowerCase().indexOf("something") !== -1;
}).hide();
ง่าย ๆ สำหรับวนรอบ:
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/
$('.testimonal').each(function(i,v){
if (condition) {
doSomething();
}
});
แม่นยำยิ่งขึ้น:
$.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
คุณสามารถใช้ jQuery $ แต่ละวิธีเพื่อวนรอบองค์ประกอบทั้งหมดด้วยคำรับรองของชั้นเรียน i => คือดัชนีขององค์ประกอบในคอลเลกชันและวาลให้วัตถุขององค์ประกอบนั้นและคุณสามารถใช้ "วาล" เพื่อเข้าถึงคุณสมบัติขององค์ประกอบของคุณและตรวจสอบสภาพของคุณ
$.each($('.testimonal'), function(i, val) {
if(your condition){
//your action
}
});