jQuery วนลูป - วิธี filter()
ตัวอย่าง
เปลี่ยนสีของทุก div และเพิ่มเข็มยุทธ์ให้กับคลาสที่ชื่อว่า "middle"
$("div").css("background", "#c8ebcc") .filter(".middle") .css("border-color", "red");
คำอธิบายและการใช้งาน
วิธี filter() จะลดชุดองค์ประกอบที่ตรงกับชุดองค์ประกอบที่ตรงกับเลือกตัวแทนที่กำหนด
รูปแบบ
.filter(selector)
ประกาศ | คำอธิบาย |
---|---|
selector | ค่าของตัวอักษร มีความหมายว่าเลือกตัวแทนที่ใช้เพื่อตรวจสอบองค์ประกอบในชุดปัจจุบัน |
รายละเอียด
ถ้ามี jQuery วิธีที่แสดงความหมายว่าชุด DOM องค์ประกอบ วิธี .filter() จะสร้าง jQuery วิธีใหม่ที่มีชุดที่ตรงกับองค์ประกอบที่ตรงกับเลือกตัวแทน ตัวเลือกตัวแทนนี้จะทดสอบแต่ละองค์ประกอบ; องค์ประกอบที่ตรงกับเลือกตัวแทนจะถูกบวกเข้าไปในผลลัพธ์
คิดแนะว่าเว็บหน้านี้มีรายการที่เรียบง่าย:
<ul> <li>item 1</li> <li>item 2</li> <li>item 3</li> <li>item 4</li> <li>item 5</li> <li>item 6</li> </ul>
เราสามารถนำวิธีนี้มาปรับปรุงชุดรายการนี้:
$('li').filter(':even').css('background-color', 'red');
ผลลัพธ์ของการเรียกใช้นี้จะเปลี่ยนสีพื้นหลังของรายการ 1, 3, 5 ให้เป็นสีแดง เพราะมันตรงกับเลือกตัวแทน (ระลึกกันว่า :even และ :odd ใช้ index ที่เริ่มต้นที่ 0)
ใช้ฟังก์ชันกรอง
รูปแบบที่สองของวิธีนี้คือ การกรองอิสระด้วยฟังก์ชันแทนด้วยเลือกตัวแทน สำหรับแต่ละองค์ประกอบ ถ้าฟังก์ชันกลับมาเป็น true องค์ประกอบนั้นจะถูกบวกเข้าไปในชุดที่ถูกกรองแล้ว; ถ้าไม่เป็น true จะถูกยกเลิกออกไป
ดูส่วนต่อไปนี้ที่เป็น HTML บางส่วนที่เกิดขึ้นในรูปแบบที่ซับซ้อนขึ้น:
<ul> <li><strong>list</strong> item 1 - one strong tag</li> <li><strong>list</strong> item <strong>2</strong> - two <span>strong tags</span></li> <li>item 3</li> <li>item 4</li> <li>item 5</li> <li>item 6</li> </ul>
เราสามารถเลือกช่องทางนี้และกรองเลือกตามสิ่งที่มีในเนื้อหาของมัน:
$('li').filter(function(index) { return $('strong', this).length == 1; ).css('background-color', 'red');