2010-10-04 14 views
17

Mi sembra di dover usare troppe funzioni .children() in alcune delle mie funzioni jQuery.jQuery: ma per quanto riguarda tutti i bambini?

alt text

Ecco il mio HTML:

<div class="goal-small-container"> 
    <div class="goal-content"> 
    <div class="goal-row"> 
     <span class="goal-actions"> 

Ed ecco la mia jQuery:

$('.goal-small-container').hover(function() { 
    $(this).children('.goal-content').children('.goal-row').children('.goal-actions').css({visibility: "visible"}); 
}, function() { 
    $(this).children('.goal-content').children('.goal-row').children('.goal-actions').css({visibility: "hidden"}); 
}); 

C'è un modo migliore? Dimmi per i bambini.

+15

Per carità, mettere una camicia su! Ci sono bambini presenti! : o) – user113716

+0

Oh mio! Sto arrossendo*. –

+0

wow, notte intensa per overflow dello stack. 235 visualizzazioni in 11 minuti. –

risposta

27
.find('.goal-content .goal-row .goal-action').whatever() 

o più semplicemente:

.find('.goal-action').whatever() 
+0

Questo non è quello che mi aspettavo. –

+13

@rockinthesixstring - partito pooper –

+0

lol risposte odio con immagini legate nessuno ... Sono così tentati di down-voto ..;) – Reigel

14

hai sentito parlare di .find()?

$('.goal-small-container').hover(function() { 
    $(this).find('.goal-actions').css({visibility: "visible"}); 
}, function() { 
    $(this).find('.goal-actions').css({visibility: "hidden"}); 
}); 
+2

Non l'avevo! Questo è esattamente ciò che stavo cercando. Apprezzo anche quello che penso fosse una modifica. –

+0

^_^Sono stato il primo a rispondere, purtroppo, hanno ottenuto voti più alti. ;) – Reigel

+0

Apprezzavo che tu fossi il primo a rispondere, ma vedere '.find()' usato con la catena di classi ereditate e la singola classe era anche utile per qualcuno non familiare. –

9

Invece di

$(this).children('.goal-content').children('.goal-row').children('.goal-actions').css({visibility: "visible"}); 

È possibile utilizzare:

$(this).find('> .goal-content > .goal-row > .goal-actions').css({visibility: "visible"}); 

Per esattamente lo stesso significato. Se non c'è alcuna possibilità che ciò sia ambiguo, tuttavia, (.goal-actions apparirà solo in quella struttura del markup) puoi semplicemente usare find('.goal-actions').

0

Perché non basta usare .Show() e .nascosto() sulla seconda <div>? E, inizialmente li mostri nascosti o qualcosa del genere.

+0

'.show()' e '.hide()' sono stati testati e * non * hanno l'effetto desiderato. –

1

Si può semplicemente utilizzare:

$('.goal-small-container').hover(function() { 
    $(this).find('goal-actions').show(); 
}, function() { 
    $(this).find('goal-actions').hide(); 
}); 
+0

haha, mi hai battuto. –

+0

Dang. Nel tempo che ho impiegato per scrivere questo sul mio iPhone, sono arrivate tante altre risposte! – mkoistinen

+0

La programmazione su iPhone è un'esperienza dolorosa, IMO. – alex

Problemi correlati