2009-08-10 36 views
19

Tôi muốn áp dụng một lớp đặc biệt cho hai mục danh sách cuối cùng trong một danh sách không có thứ tự với jQuery. Như thế này:jQuery: Nhận hai mục danh sách cuối cùng?

<ul> 
<li>Lorem</li> 
<li>ipsum</li> 
<li>dolor</li> 
<li class="special">sit</li> 
<li class="special">amet</li> 
</ul> 

Làm thế nào? Tôi có nên sử dụng: eq bằng cách nào đó?

Cảm ơn trước

Pontus

Trả lời

23

cách tiếp cận khác, sử dụng andSelfprev:

$('ul li:last-child').prev('li').andSelf().addClass("special"); 
+0

Cảm ơn bạn! Điều đó làm việc rất đẹp! – ponjoh

+0

@ponjoh: Bạn được chào đón! – CMS

5
var items = $('ul li') 
var last_two = items.filter('li:gt('+ items.length-3 +')') 
last_two.addClass('special'); 
+0

cách khác: items.slice (items.length - 2) .addClass ('đặc biệt') – Marc

+0

Thêm vào làm một câu trả lời: P –

+0

Cảm ơn rất nhiều, nhưng những gì sau đó tôi làm với biến "last_two"? – ponjoh

3
$(function(){ 

    $("li:gt("+($("li").length-3)+")").addClass("special"); 

}); 
42

Bạn có thể sử dụng chức năng slice. Nó rất linh hoạt.

$('ul li').slice(-2).addClass("special"); 
+1

+1 cho giải pháp gốc –

+1

và ngắn nhất :) – vkostromin

+2

Tôi sẽ không xem xét "gốc" này. – ricka

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