jQuery duyệt - phương thức filter()

Mô hình

Thay đổi màu sắc của tất cả các div, sau đó thêm viền cho lớp có tên là "middle":

$("div").css("background", "#c8ebcc")
  .filter(".middle")
  .css("border-color", "red");

Thử làm thử

Định nghĩa và cách sử dụng

Phương pháp .filter() sẽ thu hẹp tập hợp phần tử khớp thành các phần tử khớp với bộ lọc đã chỉ định.

Cú pháp

.filter(selector)
Parameter Mô tả
selector Giá trị chuỗi, chứa biểu thức bộ lọc để khớp với tập hợp phần tử hiện tại.

Mô tả chi tiết

Nếu có đối tượng jQuery đại diện cho tập hợp phần tử DOM, phương pháp .filter() sẽ tạo ra một đối tượng jQuery mới từ tập hợp các phần tử khớp. Bộ lọc được sử dụng sẽ kiểm tra mỗi phần tử; tất cả các phần tử khớp với bộ lọc sẽ được bao gồm trong kết quả.

Hãy suy nghĩ về trang web đơn giản với danh sách này:

<ul>
  <li>mục danh sách 1</li>
  <li>mục danh sách 2</li>
  <li>mục danh sách 3</li>
  <li>mục danh sách 4</li>
  <li>mục danh sách 5</li>
  <li>mục danh sách 6</li>
</ul>

Chúng ta có thể áp dụng phương pháp này đối với tập hợp các mục danh sách này:

$('li').filter(':even').css('background-color', 'red');

Thử làm thử

Kết quả của cuộc gọi này là đặt màu nền của các mục 1, 3, 5 là đỏ, vì chúng đều khớp với bộ lọc (nhớ lại, :even và :odd đều sử dụng index dựa trên 0).

Sử dụng hàm lọc

Hình thức thứ hai của phương pháp này là, lọc các phần tử thông qua hàm thay vì qua bộ lọc chọn lọc. Đối với mỗi phần tử, nếu hàm trả về true, phần tử sẽ được bao gồm trong tập hợp đã lọc; ngược lại, phần tử sẽ bị loại bỏ.

Xin xem đoạn HTML phức tạp này bên dưới:

<ul>
  <li><strong>mục</strong> danh sách 1 - một thẻ strong</li>
  <li><strong>mục</strong> danh sách <strong>2</strong>
   - hai <span>thẻ strong</span></li>
  <li>mục danh sách 3</li>
  <li>mục danh sách 4</li>
  <li>mục danh sách 5</li>
  <li>mục danh sách 6</li>
</ul>

Chúng ta có thể chọn các mục danh sách này và lọc chúng dựa trên nội dung của chúng:

$('li').filter(function(index) {
  return $('strong', this).length == 1;
).css('background-color', 'red');