Phương thức quét lọc DOM (Bài 2)

Trong bài  "Tìm hiểu JQuery", chúng ta đã tìm hiểu về jQuery và cách chọn và lọc các thành phần trên document, xuyên qua cả cấu trúc DOM. Tuy nhiên nếu chỉ dừng lại ở những khả năng như vậy thì vẫn còn rất nhiều hạn chế, vì sẽ có những tác vụ mong muốn không thể thực hiện bằng cách chọn cơ bản trên. jQuery cung cấp phương thức .filter() để thực hiện những công việc chọn lọc phức tạp hơn: $('tr:odd').addClass('alt'); là tương đương với $('tr').filter(':odd').addClass('alt');

Phương thức .filter() đủ mạnh để thực hiện các phép lọc phức tạp vì tham số của nó có thể là một hàm.

Ví dụ phức tạp hơn: Áp một class mới cho tất cả các liên kết ngoài (khác domain so với trang hiện tại)

$('a').filter(function() {
 return this.hostname && this.hostname != location.hostname;
}).addClass('external');


Giải thích:
* Đầu tiên, liên kết phải có thuộc tính href với một domain (this.hostname). Chúng ta làm vậy để loại bỏ các liên kết mailto: và các neo v.v..
* Tiếp theo, domain mà nó liên kết tới (this.hostname) phải khác (!=) với domain của trang hiện tại (location.hostname)
* Hàm trả về TRUE hoặc FALSE là điều kiện chọn cho phương thức .filter()