2010-01-08 21 views
7

Hola, mira el HTML a continuación. Estoy tratando de utilizar jQuery para conseguir cada tercera instancia en los DIVs con class="box" contenidas dentro del DIV con class="entry" tener un margen de ninguna mano derecha:jQuery: selector nth-child()

Mi código HTML:

<div class="entry"> 

    <div class="box"> 
     SOME HTML.... 
    </div><!-- end .box --> 

    <div class="box"> 
     SOME HTML.... 
    </div><!-- end .box --> 

    <div class="box"> 
     SOME HTML.... 
    </div><!-- end .box I Want to remove right hand margin on this div --> 

    <div class="box"> 
     SOME HTML.... 
    </div><!-- end .box --> 

    <div class="box"> 
     SOME HTML.... 
    </div><!-- end .box --> 

    <div class="box"> 
     SOME HTML.... 
    </div><!-- end .box I Want to remove right hand margin on this div --> 

    <div class="box"> 
     SOME HTML.... 
    </div><!-- end .box --> 

    <div class="box"> 
     SOME HTML.... 
    </div><!-- end .box --> 

    <div class="box"> 
     SOME HTML.... 
    </div><!-- end .box I Want to remove right hand margin on this div --> 

    </div> 
    <!--end entry--> 

Mi intento con jQuery:

<script> 
     $(document).ready(function(){ 
      $("div.entry:nth-child(3)").css("margin", "0px"); 
     }); 
    </script> 

No puedo conseguir este trabajo, ¿alguien puede ayudarme? ¡Gracias por adelantado!


gracias a todos los que ayudaron a la solución provista es de hecho correcta. Estoy codificando una plantilla suministrada y encontré que JQuery se había configurado para ejecutarse en modo de compatibilidad, por lo tanto, $ era el problema.

+0

También tuve el mismo problema. Creé un contenedor div, ".entry" en este caso, y utilicé el selector 'div.entry> div.box:nth-child (3)' que funcionaba mejor. gracias por la ayuda –

Respuesta

11

De la documentación (el subrayado es mío)

Partidos todos los elementos que son el enésimo hijo de su padre o que son pares o impares los hijos del padre.

Usted está seleccionando actualmente el padre, mientras que usted debe seleccionar a los niños:

$("div.entry > div:nth-child(3)").css("margin", "0px"); 
+2

Gracias por su ayuda muy apreciada lamentablemente eso no funcionó. – mtwallet

3

El selector :nth-child no hace referencia a n, y debe hacer referencia al div interno en su selector.

Probar:

$(document).ready(function(){ 
    $("div.entry div:nth-child(3n)").css("margin", "0px"); 
}); 
+0

¿Has intentado dar las gracias pero ninguna alegría a ninguna otra idea? – mtwallet

+1

Lo sentimos, pero descubrimos que su selector también estaba equivocado. Todavía necesitas el '3n' en lugar de simplemente' 3', pero también necesitas poner 'div' antes del' nth-child'. He probado esto y funciona. –

+0

Maldita sea, ahora lo has corregido. ;-) – Gumbo

1

probar este selector:

div.entry > div.box:nth-child(3n) 
+0

De nuevo gracias por la ayuda, pero no funcionó – mtwallet

+0

@mtwallet: Bueno, me funciona. – Gumbo

7

nth-child también parece ser no-0 indexados . Téngalo en cuenta si está acostumbrado a indexar en 0.

+0

Eso es realmente útil ... ¡zas! –