2013-08-30 138 views
9

我試圖找到一個元素的父元素和它的父母的第一個孩子,代碼是這樣的:找到父母的第一個孩子它的父

 <ul class="lowerMenu"> 
      <li><a href="" class="selected">Welcome</a></li> 
      <li><a href="">Logo</a></li> 
      <li><a href="">Websites</a></li> 
      <li><a href="">Stationery</a></li> 
      <li><a href="">Illustration</a></li> 
      <li><a href="">Full Pack</a></li> 
     </ul> 

function setIntervalAndExecute() { 
    changeImages(); 
    setTimeout(function(){ 
     showImages(imagesArray); 
    },500); 
    var intervalot = window.setInterval(function(){ 
     changeImages(); 
     var selected = $('.selected'); 
     if (!selected.parent().is(':last-child')) { 
      $('.selected').parent().next().children().addClass('selected'); 
      selected.removeClass('selected'); 
     } else { 
      $('.selected').parent().parent().children(':first-child').addClass('selected'); 
      selected.removeClass('selected'); // nesho ne mi rabotit ovdeki 
     } 
     window.setTimeout(function(){ 
      showImages(imagesArray); 
     },500); 
    },10000); 
    return intervalot; 
} 
var intervalot = setIntervalAndExecute(); 

我知道這是一個有點複雜,但我新的jquery,所以我想要做的是在類'selected'後到達最後一個元素,我想刪除它並將其設置爲第一個元素。我試過這個,但它似乎並不奏效

$('.selected').parent().parent().children(':first-child').addClass('selected'); 

,並當它到達最後一個元素的間隔執行兩次,然後停止。 這是我工作的網站:

http://nikodola.com/testsite

回答

18

如果你去了兩個級別,然後尋找下一個孩子,你只會向下一級 - 你」在<li>上重新設置selected類,而不是在其下面的<a>。您需要再往下一級。因此,它應該是:

$('.selected').parent().parent().children(':first-child').children().addClass('selected'); 

另一種方式來獲得有:

$('.selected').parent().siblings(':first-child').children().addClass('selected'); 
+0

完美,非常感謝你:d我知道這是一些小的和愚蠢的..而是孩子(),我把孩子()因爲它不是那樣工作 –

+0

我我的答案已經修復了這個錯字。 – Barmar

-1
$('.selected').closest('ul').find('li:first').addClass('selected'); 

參考closest

-1

有沒有其他的後穿越回父一個需要的總在層次結構中,您可以使用parents()而不是parent()這種方式

$('.selected').parents('ul.lowerMenu').children(:first-child').addClass('selected'); 

試試吧,這是工作!

4
$('.selected').parent().siblings(':first-child').children().addClass('selected'); 

FIDDLE DEMO