2008-10-09 24 views
49
<div id="myDiv"> 
    <a>...</a> 
    <a>...</a> 
    <a>...</a> 
    <a>...</a> 
    <a>...</a> 
    <a>...</a> 
</div> 

Si quisiera seleccionar la segunda, tercera y cuarta a etiquetas en el ejemplo anterior, ¿cómo hacer eso? Lo único que se me ocurre es:cómo seleccionar un rango de elementos en jQuery

$("#myDiv a:eq(1), #myDiv a:eq(2), #myDiv a:eq(3)") 

Pero eso no parece ser muy eficiente o bonito. Supongo que también podría seleccionar TODOS los a sy luego ejecutar .each sobre ellos, pero eso podría volverse muy ineficiente si hubiera muchos más a s.

Respuesta

105

jQuery slice() función que toma los índices del primero y el último elemento necesario selecciona un subconjunto de los elementos coincidentes. Tenga en cuenta lo que no incluye el último elemento en sí.

En su caso particular se debe utilizar

$("#myDiv a").slice(1, 4) 
+0

'$ ('className'). Rebanada (1, 4)' también puede ser útil, eso es lo que necesitaba para mi escenario, muchas gracias por sacar el hilo de sus pensamientos comenzaron :) – pulkitsinghal

+0

¿El tal amplia selección inicial agregar gastos generales de procesamiento, en comparación con un selector más específico? ¿O cree que: lt,: gt y: eq requieren más recursos? – aaronbauman

+0

Genial. Esto también funciona para seleccionar múltiples opciones del elemento de selección. – Surya

9

El uso de la función .slice() hace exactamente lo que necesito.

1

Usted debe ser capaz de hacer esto mediante la extracción de una porción de la matriz de este modo. Es la línea

$("div[id='myDiv'] > a").slice(1,4).css("background","yellow"); 

que le interesará. Afectará los elementos 2º, 3º y 4º.

<html> 
    <head> 
     <script type="text/javascript" src="jquery-1.2.6.pack.js"></script> 
     <script type="text/javascript"> 
      $(document).ready(function(){ 
       $("a").click(function(event){ 
        $("div[id='myDiv'] > a").slice(1,4).css("background","yellow"); 
        event.preventDefault(); 
       }); 
      }); 
     </script> 
    </head> 
    <body> 
     <div id="myDiv"> 
      <a>1</a> 
      <a>2</a> 
      <a>3</a> 
      <a>4</a> 
      <a>5</a> 
      <a>6</a> 
     </div> 
     <hr> 
     <a href="" >Click here</a> 
     <hr> 
    </body> 
</html> 
+6

esa selección de identificación es extremadamente ineficiente. Debería usar la sintaxis '$ (" # myDiv ")' en su lugar. –

Cuestiones relacionadas