2012-02-25 25 views
15

Tôi có một bảng có nhiều hàng (+50) và ô (+50). Bây giờ tôi muốn xóa n các ô đầu tiên hoặc cuối cùng bằng jQuery. Hiện tại tôi có mã sau:Làm thế nào để loại bỏ số 'n' của các phần tử đầu tiên hoặc cuối cùng bằng jQuery theo cách tối ưu?

var n = 10; 
var last = true; 
for (var i = 0; i < n; i++) { 
    table.find('tr').each(function() { 
     if(last)   
     $(this).find('td:last').remove(); 
     else 
     $(this).find('td:first').remove(); 
    }); 
} 

Lưu ý: table là một phần tử jQuery.

Mã hoạt động, nhưng thực hiện rất chậm khi tôi có bảng với 50 hàng có 50 ô và tôi xóa 10 ô cuối cùng. Bất kỳ ý tưởng làm thế nào để tối ưu hóa mã?

Chỉnh sửa: Tôi cũng đã thêm mệnh đề đầu tiên.

Trả lời

25

Tối ưu tôi nghĩ có thể đang sử dụng nth-last-child.

table.find("tr td:nth-last-child(-n+10)").remove();​ 

Benefit là nội động cơ chọn trình duyệt CSS sẽ được sử dụng (hoặc trong trường hợp IE jQuery sẽ giúp một chút :) Đây là demo loại bỏ 3 yếu tố cuối cùng. Thay đổi nó thành 10 trong trường hợp của bạn.

+0

sử dụng rất thông minh của toán tử 'n-th-last-child', tôi thích nó :) – ntziolis

+0

Điều này thật tuyệt vời! Tôi thích nó ... nó nhỏ, thanh lịch và biểu diễn! –

-3

Hoặc bạn có thể thử điều này.

var n = 3; 
var len = table.find('tr').length; 
table.find('tr:gt(' + (len - n - 1) + ')').find('td:last').remove();​ 
-1

Bạn có thể sử dụng bộ chọn Greater Than. Nó chọn tất cả các phần tử tại một chỉ số lớn hơn chỉ mục trong tập hợp phù hợp. Đầu tiên tính số phần tử (td). Trừ 10 và sau đó sử dụng công cụ chọn lớn hơn.

Các vấn đề liên quan