Trong jQuery, filter()
làm giảm kết quả của bạn với những yếu tố đáp ứng một điều kiện nhất định.jQuery: sử dụng bộ lọc(), nhưng làm việc với cả hai kết quả
Việc này chia danh sách thành hai phần. Làm việc với "một nửa tốt" trong những yếu tố rất dễ dàng:
$("some selector").filter(function() {
// determine result...
return result;
}).each(/* do something */);
Nhưng làm thế nào tôi có thể làm việc với "nửa kia" của các yếu tố của tôi, quá - nhưng mà không làm tương đương với này:
$("some selector").filter(function() {
// determine result...
return !result;
}).each(/* do something else */);
Về cơ bản, tôi muốn cho hai phần riêng biệt /* do something */
vào một bộ lọc. Một cho những người phù hợp, và một cho những người khác - mà không cần phải lọc hai lần. Tôi có thiếu chức năng jQuery không?
P.S .: Tôi đoán tôi có thể làm:
$("some selector").each(function() {
// determine result...
if (result)
/* do something */
else
/* do something else */
});
Nhưng tôi đã hy vọng cho một cái gì đó đẹp hơn.
Tôi nghĩ rằng đó sẽ là 'mỗi()'. – Matt
http://jsfiddle.net/nZtRF/ Một điều có thể đáng chú ý là với phương thức 'not()', hiệu suất giảm đi theo cấp số nhân khi số phần tử tăng lên. Đối với số lượng nhỏ hơn, nó là tầm thường. Đối với số lượng lớn, bạn sẽ nhận được hiệu suất tốt hơn bằng cách sử dụng câu lệnh 'if()' trong bộ lọc. Xem thử nghiệm tại liên kết jsfiddle ở trên, và rối tung xung quanh với số lượng. – user113716
@patrick: Rất đúng. Đó là một nhược điểm nghiêm trọng. : - \ – Tomalak