2011-11-22 5 views
5

Sto tentando di usare CoffeeScript/jQuery per effettuare le seguenti operazioni:Come selezionare e nascondere tutti, ma i primi 5 elementi in un file HTML (DOM)

1) Recupero di tutti i 'temi' visualizzate nel formato HTML (vedi sotto)

2) Nascondere tutti gli argomenti da visualizzare tranne i primi 5 elencati.

enter image description here

ho cercato di fare quanto segue, ma non funziona

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

Qualcuno mi può consigliare su come posso recuperare correttamente l'elenco degli argomenti del documento HTML e successivamente nascondere tutti, ma la primi 5 argomenti?

risposta

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

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

+1

L'idea giusta, tranne l'OP vuole nascondere tutto tranne il primo 5, non nascondere il primo 5. – jfriend00

+1

oops, corretto .... – ThiefMaster

+1

Questo non può essere la soluzione al problema dell'OP, perché il codice CoffeeScript ' $ (". topics .topic") [5 ..- 1] .hide() 'compila esattamente questo. ([Provalo] (http://coffeescript.org/#try:%24 (% 22.topics% 20.topic% 22)% 5B5 ..- 1% 5D.hide()).) –

3

Scopri i jQuery gt() selector:

$(".topics .topic:gt(4)").hide(); 
+0

Il modo più semplice . –

3

Il codice

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

dovrebbe funzionare, in quanto si compila per $(".topics .topic").slice(5).hide() e jQuery's slice fa esattamente quello che vuoi. Quindi immagino che il tuo codice sia in esecuzione prima che il DOM sia nello stato giusto. Hai provato

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

? Cosa ottieni quando lo fai

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

nello stesso punto del tuo script?

Se il problema non riguarda la selezione, il problema deve essere con hide(), che funziona modificando i CSS incorporati delle destinazioni. Potresti ignorare quel CSS altrove nel tuo codice. Usa "Ispeziona elemento" per ottenere i dettagli.