2011-11-22 28 views
5

Estoy intentando utilizar CoffeeScript/jQuery para hacer lo siguiente:Cómo seleccionar y ocultar todos menos los primeros 5 elementos en un archivo HTML (DOM)

1) Recuperación de todos los 'temas' que aparecen en el html (véase a continuación)

2) Oculte todos los temas de la pantalla excepto los primeros 5 enumerados.

enter image description here

he tratado de hacer lo siguiente, pero no está funcionando

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

Alguien me puede aconsejar sobre cómo puedo recuperar correctamente la lista de temas del documento HTML y posteriormente ocultar todos, pero el primeros 5 temas?

Respuesta

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

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

+1

Idea correcta, excepto que OP quiere ocultar todo, excepto los primeros 5, no ocultar los primeros 5. – jfriend00

+1

¡Uy !, corregido .... – ThiefMaster

+1

Esto no puede ser la solución al problema del OP, porque el código CoffeeScript ' $ (". topics .topic") [5 ..- 1] .hide() 'compila exactamente esto. ([Inténtalo] (http://coffeescript.org/#try:%24 (% 22.topics% 20.topic% 22)% 5B5 ..- 1% 5D.hide()).) –

3

Su código

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

debería funcionar, ya que compila a $(".topics .topic").slice(5).hide() y jQuery's slice hace exactamente lo que quiere. Así que supongo que su código se está ejecutando antes de que el DOM esté en el estado correcto. ¿Has probado

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

? ¿Qué obtienes cuando haces

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

en el mismo punto en tu script?

Si el problema no está en la selección, entonces el problema debe ser con hide(), que funciona modificando el CSS en línea de los objetivos. Es posible que esté anulando ese CSS en otro lugar en su código. Use "Inspeccionar Elemento" para obtener detalles.

Cuestiones relacionadas