2010-10-04 8 views
17

Czuję, że muszę użyć zbyt wiele .children() w niektórych moich funkcji jQuery.jQuery: ale co z wszystkimi dziećmi?

alt text

Tu jest mój HTML:

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

A oto mój 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"}); 
}); 

Czy istnieje lepszy sposób? Powiedz mi o dzieciach.

+15

Na litość boską, włóż koszulę! Dzieci są obecne! : o) – user113716

+0

Och, mój! Rumienię się*. –

+0

Wow, zajęty wieczór przepełnienia stosu. 235 odsłon w 11 minut. –

Odpowiedz

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

lub prościej:

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

Nie tego oczekiwałem. –

+13

@rockinthesixstring - party pooper –

+0

lol nienawidzę odpowiedzi z brakiem powiązanych obrazów ... Jestem tak kuszony, by głosować w dół ..;) – Reigel

14

Czy słyszałeś o .find()?

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

Nie miałem! To jest dokładnie to, czego szukałem. Doceń także to, co moim zdaniem było zmianą. –

+0

^_^Najpierw odpowiedziałem, niestety, zdobyli wyższe głosy. ;) – Reigel

+0

Byłem wdzięczny, że byłeś pierwszy, aby odpowiedzieć, ale widząc '.find()' używane z łańcuchem odziedziczonych klas i jednej klasy było również przydatne dla kogoś nieznanego. –

9

Zamiast

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

Można użyć:

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

z dokładnie tego samego znaczenia. Jeśli nie ma szans, że jest to niejednoznaczne, (.goal-actions pojawi się tylko w tej strukturze znaczników), możesz po prostu użyć find('.goal-actions').

0

Dlaczego nie można po prostu użyć .pokaż() i .hide() na drugim <div>? I, początkowo, mają one ukryty wyświetlacz lub coś takiego.

+0

'.show()' i '.hide()' zostały przetestowane i * nie * mają pożądany efekt. –

1

można po prostu użyć:

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

haha, pokonałeś mnie. –

+0

Dang. W czasie, gdy zajęło mi to napisanie tego na moim iPhonie, pojawiło się wiele innych odpowiedzi! – mkoistinen

+0

Programowanie na iPhone'a to bolesne doświadczenie, IMO. – alex

Powiązane problemy