2013-08-30 21 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

は、あなただけの1レベル下を行っている - あなたは」 <li>selectedクラスを再設定します。その下には<a>ではなく、別のレベルを下げる必要があります。だから、次のようになります。

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

取得するための別の方法があります:

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

完璧な、どうもありがとうございました。私はそれは小さく、愚かな何かを知っていた..しかし、代わりに子()D iは(子供を入れて)それは私がその –

+0

のように働いていませんでした原因私の答えではすでにそのタイプミスが修正されています。 – Barmar

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

参照closest

-1

他の後の親1に戻ってトラバース合計の必要はありません階層内でこのようにparent()の代わりにparents()を使用することができます

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

試してみてください!

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

FIDDLE DEMO

関連する問題