Frage

Ich habe eine Klasse von divs ( 'open') die enthalten eine andere Klasse von divs ( 'Artikel') wie folgt aus:

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

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

Was ich suche zu tun, ist ein slidedown alle ‚item‘ Klasse divs, die in der ‚offenen‘ Klasse sind, die angeklickt wird.

Bisher habe ich

$(document).ready(function () {

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

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

    });

, aber es funktioniert nicht. Irgendwelche Vorschläge?

Danke, John

War es hilfreich?

Lösung

Statt :first-child Sie sofortige Kinder , die Sie in diesem Fall unter Verwendung von .children() , wie diese bekommen:

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

:first-child für das Erhalten des ersten Child-Element auf jeder Ebene (und in jeder "Zweig"), .children() oder die Kindselektor (>) für immer alle sofort / sind "first level" Kinder.

Andere Tipps

Wie wäre es

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

Zuerst nehme ich an, dass Sie schließen tatsächlich von der $(document).ready, da in dem Codeblock Sie auf dem Laufenden, es ist nicht geschlossen. Stellen Sie sicher, Sie tun so in Ihrem Code.

Zweitens sind Sie nicht nur auf der Suche nach children() von .open? In diesem Fall werden Sie wollen

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

Edited . Dank Kommentare habe ich den live() Vorschlag entfernt

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top