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

¿Fue útil?

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()

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top