2013-04-11 50 views
9

Tôi muốn xóa tất cả các li khỏi danh sách không có thứ tự của mình nhưng tôi muốn giữ lại li trước khi li bất kỳ ai biết cách thực hiện?Xóa mục khỏi danh sách

bây giờ tôi có

$('.pagination ul li:not(:last)').remove(); 

nhưng mà loại bỏ tất cả mọi thứ nhưng người cuối cùng nên không đúng

+0

Tôi khuyên bạn nên sử dụng giải pháp của Kevin Bowersox. Giải pháp của ông có thể không phải là ngắn nhất, nhưng giải pháp hiệu quả nhất ở đây. Các mã của Bojangles là tốt đẹp và sạch sẽ nhưng cũng là phương pháp chậm nhất được đăng ở đây. Hãy xem qua kết quả kiểm tra: http://jsperf.com/jquery-list-filter – Chris

Trả lời

9

Sử dụng :eq() có chỉ số tiêu cực - điều này sẽ đếm từ cuối của bộ sưu tập thay vì bắt đầu.

Trong trường hợp của bạn, bạn sẽ muốn sử dụng một chỉ số của -2 (-1 sẽ là người cuối cùng <li>), như vậy:

$('.pagination ul li:not(:eq(-2))').remove(); 

Here's a quick demonstration.

+0

nếu tôi làm điều này tôi nhận được lỗi cú pháp? – user1994529

+0

Bạn đang sử dụng phiên bản jQuery nào? Ví dụ tôi đã cho [công trình tốt cho tôi] (http://jsfiddle.net/mj79g/) với jQuery 1.9.1 – Bojangles

+2

@ user1994529: Sau đó, bạn đang làm điều gì đó sai bằng cách nào đó. Mã này là đúng cú pháp. –

2

Javascript

var $items = $('.pagination ul li'); 

$items.not($items.eq($items.length-2)).remove(); 

HTML

<div class="pagination"> 
    <ul> 
     <li>Page 1</li> 
     <li>Page 2</li> 
     <li>Page 3</li> 
     <li>Page 4</li> 
     <li>Page 5</li> 
    </ul> 
</div> 

làm việc Ví dụhttp://jsfiddle.net/B8NPV/

2

Vâng, bạn có thể sử dụng nth-last-of-type để lấy một trước khi người cuối cùng. Kèm jsfiddle http://jsfiddle.net/zjLph/

HTML

<div class="pagination"> 
    <ul> 
     <li>1</li> 
     <li>2</li> 
     <li>3</li> 
     <li>4</li> 
     <li>5</li> 
    </ul> 
</div> 

JS

$('.pagination ul li').filter(':not(:nth-last-of-type(2))').remove(); 
4

Vì lợi ích của sự hoàn chỉnh trong câu trả lời này, đây là khác (cho là dễ đọc hơn) phương pháp:

$('.pagination ul li:last-child').prev().siblings().remove(); 

Bạn có thể xem tại đây: http://jsfiddle.net/bBxDL/1

+0

-1 'Tôi muốn loại bỏ tất cả các li từ danh sách không có thứ tự của tôi nhưng tôi muốn giữ li trước li' cuối cùng. Điều này ngược lại. – Curt

+0

Ồ, xin lỗi, tôi đã đọc sai câu hỏi. –

+1

@Curt Đã được sửa chữa. Điều này thực sự an toàn hơn một chút so với câu trả lời bình chọn hàng đầu trong trường hợp chung, vì nó luôn chọn mục danh sách là đứa con cuối cùng thứ hai và loại bỏ mọi thứ khác. –

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