elementos a nivel de primer niño jquery slideDown
Pregunta
Tengo una clase de divs (abrir) el contener otra clase de divs ( 'artículos') de esta manera:
<div class="open">
<div class="item">
this is a test 1
</div>
<div class="item">
this is a test 2
</div>
</div>
Lo que estoy tratando de hacer es un slideDown de todos los divs 'Item' de clase que se encuentran en la clase 'abierta' que se ha hecho clic.
Hasta ahora tengo
$(document).ready(function () {
$('.open').click(function () {
$(this).find(':first-child').slideDown('1000');
});
pero que no está funcionando. ¿Alguna sugerencia?
Gracias, John
Solución
En lugar de :first-child
desea hijos inmediatos , que se puede obtener en este caso utilizando .children()
, como esto:
$('.open').click(function () {
$(this).children().slideDown('1000');
});
:first-child
es decir para conseguir el primer elemento secundario en cada nivel (y en cada "rama"), .children()
o la selector de hijo (>
) son para lograr que todos los niños / inmediatos "de primer nivel".
Otros consejos
¿Qué tal
$(".open").click(function() {
$(this).children().slideDown(1000);
});
En primer lugar, supongo que en realidad estás cerrando el $(document).ready
, ya que en el bloque de código que envió, no está cerrado. Asegúrese de que está haciendo lo que en su código.
En segundo lugar, ¿no es así sólo en busca de children()
de .open
? En el que caso de que quiera
$(document).ready(function() {
$('.open').click(function() {
$(this).children('.item').slideDown('1000');
});
});
Editado . Gracias a los comentarios, he eliminado la sugerencia live()