d'abord les éléments de niveau enfant de jquery
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
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()