2011-02-15 20 views
7

i var:jquery: en yakın ('h3') seçici?

<ul class="rating"> 
    <h3>Like this</h3> 
    <li class="rating-number"> 
     <div id="iLikeThis" class="iLikeThis"> 
      <span class="counter">2</span> 
     </div> 
    </li> 
</ul> 

bu benim jquery kod

$('.iLikeThis .counter').each(function() { 
     $(this).parent().parent().parent().children('h3').text('You like this'); 
     $(this).parent().addClass('like'); 
}); 

en yakın h3 elemanı seçmek için daha iyi bir yolu var mı. 3-kez ebeveyn() ile çalışır, ancak en yakın ('h3) ile çalışmaz.

Neden? .counter

+1

budur geçersiz HTML. Bir ul'in çocuğu olarak bir h3'e sahip olamazsın. Bunun gibi kırık HTML ile, tarayıcının doğru şeyi yapıp yapmadığını bilmek imkansızdır. – RoToRa

+0

@RoToRa: Güzel yakalama. – BoltClock

+0

teşekkürler! Li'nin çocuğu olarak alabilir misin? – matt

cevap

13

h3, .counter numaralı bir ebeveyn değildir, bu çalışmayacak. yerine .rating üzerine .closest() kullanın ve h3 bulmak:

$(this).closest('.rating').children('h3').text('You like this');