2009-07-25 1 views
5

Tôi có một danh sách trong một ul có trong bộ lặp ASP. Danh sách được đặt thành tràn với thanh cuộn và chỉ hiển thị 16 li mỗi lần. Có một chức năng đếm jQuery mà tôi có thể sử dụng mà sẽ cho phép tôi chọn mỗi "16" li và thêm một lớp học cụ thể cho nó?Tôi có thể đếm các phần tử bằng jQuery không?

Chọn tùy chọn cuối cùng sẽ không hoạt động vì sốthứ 16 không phải là số div cuối cùng vì nó nằm trong bộ lặp.

Trả lời

11

Có, nó được gọi là :nth-child.

mẫu:

$("ul li:nth-child(16n)").addClass("sixteenth"); 
+0

Phải, tôi hiểu điều đó. Nhưng tôi muốn có được "16", "32", vv ... Chức năng này có làm được không? –

+0

Tôi đã sửa đổi nó, có nó sẽ. Chỉ cần thay đổi (16) thành (16n). –

+0

Tuyệt vời, đó chính xác là những gì tôi đang tìm kiếm. Cảm ơn! –

0

Nếu bạn muốn áp dụng lớp để mọi phần tử sau 16 thứ sau đó bạn có thể sử dụng :gt(index) chọn.

$("ul li:gt(16)").addClass("CLASS_NAME"); 

nhớ: gt,: lt etc selectors sử dụng chỉ mục dựa trên 0.

cho mỗi 16 thứ ofcouse bạn có thể sử dụng :nth-child(index)

$("ul li:nth-child(16)").addClass("CLASS_NAME"); 

nhớ : thứ n con selectors dựa sử dụng 1 phần tử đầu tiên.

+0

cũng phương pháp này ": nth-child (index)" sẽ chỉ chọn li thứ 16. Tôi cần nó để sau đó lấy 32, 48, ..... –

+0

Có và cho rằng http://stackoverflow.com/questions/1181113/can-i-count-elements-using-jquery/1181187#1181187 sẽ hoạt động !! – TheVillageIdiot

+0

Vì vậy, sẽ http://stackoverflow.com/questions/1181113/can-i-count-elements-using-jquery/1181114#1181114 - nhưng với mã ít hơn :) –

1

Bạn có thể thử một .each chức năng:

$("ul li").each(function(index, domEle) { 
    if (index%16==0) { 
      $(domEle).addClass("CLASS_NAME"); 
    } 
}); 
+0

domEle đại diện cho những gì? –

+0

Không phải tùy chọn này hơi nặng tay sao? jQuery đã cung cấp khả năng làm những gì anh ta muốn * mà không * lặp lại trong toàn bộ danh sách! Xem câu trả lời của tôi cho một ví dụ về bộ chọn thứ n-con. –

+0

nó hoạt động, mặc dù. giải pháp của bạn là, cách bạn nói, thanh lịch hơn, tho :) – Jason