Question

J'ai une classe de divs ( « ouvert ») le contenir une autre classe de divs ( « articles ») comme ceci:

<div class="open">
    <div class="item">
    this is a test 1
    </div>

    <div class="item">
    this is a test 2
    </div>
</div>

Qu'est-ce que je cherche à faire est une slideDown de toute la classe « article » divs qui sont dans la classe « ouverte » qui a cliqué.

Jusqu'à présent, je

$(document).ready(function () {

    $('.open').click(function () {

        $(this).find(':first-child').slideDown('1000');

    });

mais il ne fonctionne pas. Toutes les suggestions?

Merci, John

Était-ce utile?

La solution

Au lieu de :first-child que vous voulez enfants immédiats , que vous pouvez obtenir dans ce cas en utilisant .children() , comme ceci:

$('.open').click(function () {
  $(this).children().slideDown('1000');
});

:first-child pour obtenir le premier élément enfant à chaque niveau (et chaque "branche"), .children() ou sélection de l'enfant (>) sont pour obtenir tous les enfants immédiats / "premier niveau".

Autres conseils

Qu'en est-

$(".open").click(function() {
    $(this).children().slideDown(1000);
});

Tout d'abord, je suppose que vous fermez en fait hors du $(document).ready, puisque dans le bloc de code affiché, il est pas fermé. Assurez-vous le faire dans votre code.

Deuxièmement, ne sont pas vous seulement à la recherche de children() .open? Dans ce cas, vous voulez

$(document).ready(function() {
  $('.open').click(function() {
    $(this).children('.item').slideDown('1000');
  });
});

Modifié :. Merci aux commentaires, je l'ai retiré la suggestion de live()

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top