Domanda

Ho una classe di div ( 'aperto') la contengono un'altra classe di div ( 'articoli') in questo modo:

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

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

Quello che sto cercando di fare è uno slideDown di tutti i div class 'item' che sono nella classe 'aperto' che ha cliccato.

Finora ho

$(document).ready(function () {

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

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

    });

, ma non funziona. Qualche suggerimento?

Grazie, John

È stato utile?

Soluzione

Invece di :first-child si desidera figli diretti , che si può ottenere in questo caso utilizzando .children() , in questo modo:

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

:first-child IS per ottenere il primo elemento figlio ad ogni livello (e in ogni "ramo"), .children() o il selettore bambino (>) sono per ottenere tutte le immediate / "figli di primo livello".

Altri suggerimenti

Come su

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

Per prima cosa, suppongo che si sta effettivamente chiudendo il $(document).ready, dal momento che nel blocco di codice che hai postato, non è chiusa. Assicurati di farlo in codice.

In secondo luogo, non è vero solo in cerca di children() di .open? In questo caso si desidera

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

A cura :. Grazie ai commenti, ho rimosso il suggerimento live()

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top