2010-10-04 20 views
17

Bazı jQuery işlevlerimde çok fazla .children() kullanmam gerektiğini hissediyorum.jQuery: Peki ya tüm çocuklar?

$('.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"}); 
}); 

daha iyi bir yolu var mı:

alt text

İşte benim HTML: benim jQuery burada

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

Ve değil mi? Bana çocukları söyle.

+15

, bir gömlek koymak! Mevcut çocuklar var! : o) – user113716

+0

Oh, benim! Kızarıyorum*. –

+0

Vay, yığınının taşması için yoğun gece. 11 dakikada 235 görüntüleme. –

cevap

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

veya daha basitçe:

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

Bu, beklediğim şey değil. –

+13

@rockinthesixstring - parti pooper –

+0

lol ile ilgili hiçbiri ile ilgili cevaplar nefret ediyorum ... Ben aşağı oy için cazip ..;) – Reigel

14

.find() hakkında duydunuz mu?

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

Ben yapmadım! Bu tam olarak * ne aradığımı. Ayrıca bir düzenleme olduğunu düşündüğüm için teşekkür ederiz. –

+0

^_^Cevap veren ilk kişiydim, ne yazık ki daha yüksek oylar aldılar. ;) – Reigel

+0

İlk cevap verdiğiniz için teşekkür ettim, ancak “.find()” ifadesini kalıtsal sınıfların zinciri ile kullandığını ve tek sınıfın da bilmediği biri için de yararlı olduğunu gördüm. –

9

yerine

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

Seni kullanabilirsiniz:

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

tam olarak aynı anlamı için. Bununla birlikte, belirsiz olma ihtimaliniz yoksa (.goal-actions sadece işaretlemenin yapısında görünecektir) sadece find('.goal-actions') kullanabilirsiniz.

0

Neden sadece .show kullanmayın() ve ikinci <div> üzerine .hide()? Ve başlangıçta onlara gizli veya bir şey göstersin.

+0

'.show()' ve '.hide()' test edilmiş ve * istenen etkiye sahip değildir. –

1

sadece kullanabilirsiniz:

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

haha, onu bana dövdün. –

+0

Dang. Bunu iPhone'uma yazmam için gereken zaman geldi, diğer birçok cevap geldi! – mkoistinen

+0

iPhone'da programlama, acı verici bir deneyim, IMO. – alex

İlgili konular