2013-06-03 45 views
0

所以這似乎是在我的腦海比它需要更復雜。我需要找到一種方式addClass('selected');到以前的所有元素的特定孩子。比方說,我的HTML看起來像這樣:得到jquery所有以前的元素的孩子

<ul> 
    <li class="radio"> 
    <div class="child"> 
     <span>1</span> 
    </div> 
    </li> 
    <li class="radio"> 
    <div class="child"> 
     <span>2</span> 
    </div> 
    </li> 
    <li class="radio"> 
    <div class="child"> 
     <span>3</span> 
    </div> 
    </li> 
    <li class="radio"> 
    <div class="child"> 
     <span>4</span> 
    </div> 
    </li> 
    <li class="radio"> 
    <div class="child"> 
     <span>5</span> 
    </div> 
    </li> 
</ul> 

現在,當我點擊「4」,我想有這樣的事情:

$('.radio span').click(function(){ 
    $('.radio span').removeClass('selected'); 
    $(this).addClass('selected'); 
}); 

這工作得很好,因爲它增加了全班第四個。我需要它也選擇所有李的跨度之前4.我試過:

$(this).closest('li.radio').prevAll().children('span').addClass('selected'); 

但它似乎並不想工作?

回答

3

您需要使用.find才能獲得span,因爲它不是li(它是後代)的子代。

$(this).closest('li.radio').prevAll().find('span').addClass('selected'); 

你應該IT連鎖關閉addClass的:

$(this).addClass('selected').closest('li.radio').prevAll().find('span').addClass('selected'); 
+0

精彩,就像一個魅力!我會接受它何時讓我:D – Xhynk

相關問題