การทำงานกับเมธอด each ใน jQuery

เมื่อเรามีกลุ่มขององค์ประกอบที่ได้รับ มาโดยใช้ jQuery เราสามารถทำการเปลี่ยนแปลง พวกมันได้เฉพาะสำหรับทุกองค์ประกอบพร้อมกันเท่านั้น

ตัวอย่างเช่น ถ้าเราต้องการเปลี่ยนข้อความของ ย่อหน้าทั้งหมดที่พบ - เราจะไม่สามารถทำให้ ข้อความต่างกันได้

ในกรณีนี้เมธอดพิเศษ each จะช่วยเราได้ ซึ่งอนุญาตให้ใช้ ฟังก์ชันใด ๆ สำหรับองค์ประกอบทั้งหมดในชุดของ jQuery ในขณะที่ภายในฟังก์ชันนี้เราจะสามารถ แยกองค์ประกอบและทำต่างกัน กับแต่ละองค์ประกอบได้

โดยพื้นฐานแล้ว each เป็นลูป ด้วยความช่วยเหลือซึ่งสามารถวนซ้ำองค์ประกอบทั้งหมด ที่พบได้ ลิงก์ไปยังองค์ประกอบนั้นซึ่ง กำลังถูกวนซ้ำในขณะนี้จะอยู่ใน this

เราสามารถใช้ this นี้ ใน JavaScript ธรรมดาได้ ดังที่เราทำมาก่อนหน้านี้ ตัวอย่างเช่น อย่างนี้ - this.innerHTML - และแสดง เนื้อหาภายในขององค์ประกอบของเรา แต่ควรห่อ this ด้วยเครื่องหมายดอลลาร์ jQuery อย่างนี้ - $(this) - ในกรณีนี้เราจะสามารถใช้วิธีการ และเชนของ jQuery ทั้งหมดกับมันได้

มาดูโค้ด HTML ต่อไปนี้กัน:

html<p class="www">text</p>
<p class="www">text</p>
<p class="www">text</p>
<p>text</p>

ในตัวอย่างนี้เราควรได้รับองค์ประกอบทั้งหมด ที่มีคลาส www และแสดงบนหน้าจอ เนื้อหาของพวกมัน วิธีทำ: โดยใช้ $('.www') เราได้รับองค์ประกอบที่ต้องการ, จากนั้นโดยใช้ each(test) เราใช้ฟังก์ชัน test กับแต่ละองค์ประกอบ ที่ได้รับ มันจะถูกใช้กับย่อหน้าแรกก่อน, จากนั้นกับย่อหน้าที่สอง, ที่สาม และต่อไปเรื่อยๆ

ภายในฟังก์ชัน this จะชี้ไปที่ องค์ประกอบนั้นซึ่งฟังก์ชัน test กำลังถูกใช้ - ก่อนอื่นนี่จะเป็นองค์ประกอบแรก, จากนั้นอันที่สอง และอื่นๆ ด้วยความช่วยเหลือของ โครงสร้าง $(this) แทนที่จะเป็น this ธรรมดาจาก JavaScript เราจะได้องค์ประกอบ jQuery และใช้เมธอด html กับมัน ซึ่ง จะได้ข้อความขององค์ประกอบของเรา จากนั้น มันจะถูกแสดงบนหน้าจอ:

javascript/*
  เราเขียนชื่อฟังก์ชัน test โดยไม่มีเครื่องหมายคำพูดและ (),
  เพราะเราต้องการโค้ดของมัน ไม่ใช่ผลลัพธ์:
*/

$('.www').each(test);

function test() {
  alert($(this).html());
}

สำหรับการแก้ไขงานนี้สามารถใช้ฟังก์ชันที่ไม่ระบุชื่อได้ - นี่เป็นสิ่งที่ทำกันบ่อยที่สุด:

javascript$('.www').each(function() {
  alert($(this).html());
});

เรายังสามารถส่ง callback function พร้อมพารามิเตอร์ให้กับเมธอด each ได้

มาในตัวอย่างถัดไปเพิ่มลำดับ ให้กับ li ทั้งหมดบนหน้าเว็บ ทีนี้ ในฟังก์ชันที่ไม่ระบุชื่อของเราเราจะส่งหมายเลข องค์ประกอบและตัวองค์ประกอบเอง:

javascript$('li').each(function (index, elem) {
  $(elem).append(index);
});

และตอนนี้ใช้ this แทน elem:

javascript$('li').each(function (index) {
  $(this).append(index);
});
Задание 1

เปลี่ยนเนื้อหาของ li ทั้งหมดเป็น หมายเลขลำดับของพวกมัน