2011-10-16 13 views
8

que tienen una página que tiene 50 elementos con la misma clase "campos", que son todas las pantallas de ninguno en este momento¿Cómo se muestra la primera n cantidad de elementos en jQuery?

<div class="fields" style="display:none;"> 
    ... 
</div> 
<div class="fields" style="display:none;"> 
    ... 
</div> 
<div class="fields" style="display:none;"> 
    ... 
</div> 
<div class="fields" style="display:none;"> 
    ... 
</div> 
... 

Cómo yo sólo muestro los primeros 3 o el número. Además cuente con un conteo en la parte superior como en el siguiente ejemplo a continuación.

Así, por ejemplo si necesitaba los 3 primeros esto es lo que necesito los divs para parecerse

<div class="fields"> 
    <h1>Station 1</h1> 
</div> 
<div class="fields"> 
    <h1>Station 2</h1> 

</div> 
<div class="fields"> 
    <h1>Station 3</h1> 
</div> 
<div class="fields" style="display:none;"> 
    ... 
</div> 
... 

Así que, básicamente, sólo algunos el número de divs que necesito ... Ya tengo el número de elementos que necesito mostrar en esta declaración borrosa en la variable station_count. Observe también necesito una etiqueta span con las ideas count..any sobre cómo hacer esto

$("#number_station").blur(function(){ 
     var station_count = $(this).val(); 
        //code goes there 
    }); 

Respuesta

16

Cómo yo sólo muestro el primer número de 3 o lo que sea.

$('div.fields:lt(3)').show(); 

Plus contar con una cuenta en la parte superior

$('div.fields:lt(3)').each(function (index) 
{ 
    $('<h1></h1>', {text: 'Station ' + index}).prependTo(this); 
}).show(); 

Demostración: http://jsfiddle.net/mattball/TssUB/


Leer los documentos de la API de jQuery para preguntas básicas de esta manera:

+1

+1, me vencieron a la misma respuesta :) –

+0

1, por ejemplo, jsFiddle – Neil

+0

Porque: lt() es una extensión de jQuery y no forma parte de la especificación CSS, consultas usando: lt() no puede tomar ventaja del aumento de rendimiento proporcionado por el método DOM querySelectorAll() nativo. Para un mejor rendimiento en navegadores modernos, use $ ("su-pure-css-selector"). Slice (0, índice) en su lugar. – Neil

1

Con

$(".fields").each(function() { 
     //do whatever like count then show/hide 

    }); 

se puede iterar sobre los divs ocultos. Entonces, con una variable simple puede comenzar/detener cuando lo necesite.

8

Mientras que las otras respuestas funcionarán, recientemente descubrí y amo el método jQuery slice().

$(".fields").slice(0, 3).each(function(index) { 
    // Do whatever you want to the first three elements 
} 
+2

'.slice (0, 4)' dará los primeros cuatro elementos, no tres, ya que sus valores están indexados en 0. –

+1

Nota, si jquery es en absoluto inteligente, entonces el selector ': lt (3)' será más eficiente que 'slice()'. Pero 'slice()' es más flexible para trabajar con conjuntos intermedios. – jbrookover

+0

@MattBall Whoops :) – jbrookover

Cuestiones relacionadas