2011-11-22 11 views
5

Tôi đang cố gắng sử dụng coffeescript/jQuery để làm như sau:Làm thế nào để lựa chọn và ẩn tất cả nhưng 5 yếu tố đầu tiên trong một tập tin HTML (DOM)

1) Lấy tất cả các 'chủ đề' được hiển thị trong html (xem bên dưới)

2) Ẩn tất cả các chủ đề khỏi hiển thị ngoại trừ 5 chủ đề đầu tiên được liệt kê.

enter image description here

Tôi cố gắng để làm như sau nhưng không được làm việc

//Retrieve the entire list of and hide all but the first 5 topics in the list 
$(".topics .topic")[5..-1].hide() 

Ai đó có thể tư vấn cho tôi về cách tôi có thể lấy lại một cách chính xác danh sách các chủ đề từ tài liệu HTML và sau đó ẩn TẤT CẢ nhưng 5 chủ đề đầu tiên?

Trả lời

11
$(".topics .topic").slice(5).hide(); 

http://api.jquery.com/slice/

+1

Ý tưởng đúng, ngoại trừ OP muốn ẩn tất cả trừ 5 đầu tiên, không ẩn đầu tiên 5. – jfriend00

+1

oops, cố định .... – ThiefMaster

+1

Đây không phải là giải pháp cho vấn đề của OP, vì mã CoffeeScript ' $ (". themes .topic") [5 ..- 1] .hide() 'biên dịch chính xác điều này. ([Dùng thử] (http://coffeescript.org/#try:%24 (% 22.topics% 20.topic% 22)% 5B5 ..- 1% 5D.hide()).) –

3

Mã của bạn

$(".topics .topic")[5..-1].hide() 

nên làm việc, kể từ khi nó biên dịch để $(".topics .topic").slice(5).hide()jQuery's slice thực hiện chính xác những gì bạn muốn. Vì vậy, tôi đoán rằng mã của bạn đang chạy trước khi DOM ở trạng thái đúng. Bạn đã thử

$(document).ready -> $(".topics .topic")[5..-1].hide() 

? Bạn nhận được gì khi bạn làm

alert $(".topics .topic").length 

tại cùng một điểm trong tập lệnh của bạn?

Nếu sự cố không xảy ra với lựa chọn, thì vấn đề phải là hide(), hoạt động bằng cách sửa đổi CSS nội tuyến của mục tiêu. Bạn có thể ghi đè CSS đó ở nơi khác trong mã của bạn. Sử dụng "Kiểm tra phần tử" để biết chi tiết.