2013-08-30 16 views
9

Ich versuche, die Eltern eines Elements zu finden und es ist Eltern das erste Kind, ist der Code wie folgt:finden Eltern und erstes Kind davon Eltern

 <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(); 

Ich weiß, es ist ein wenig kompliziert, aber ich bin new zu jquery, also was ich versuche zu tun ist, nachdem die Klasse 'selected' das letzte Element erreicht hat, das ich entfernen möchte, und setze es auf das erste Element. Ich habe mit dieser versucht, aber es scheint nicht

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

zu arbeiten und, wenn es um das letzte Element wird das Intervall zweimal ausgeführt wird und stoppt dann. Diese ist die Seite, die ich arbeite:

http://nikodola.com/testsite

Antwort

18

Wenn Sie zwei Ebenen nach oben, dann das nächste Kind finden, sind Sie nur eine Ebene nach unten gehen - Sie‘ Setzen Sie die selected Klasse auf die <li>, nicht die <a> darunter .. Sie müssen eine andere Ebene gehen. So sollte es sein:

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

Ein anderer Weg, um dorthin zu gelangen ist:

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

perfekt, vielen Dank: D Ich wusste, es war etwas klein und dumm .. aber stattdessen Kind() i Kinder put() weil es nicht wie dieser –

+0

ich arbeitete habe schon diesen Tippfehler in meiner Antwort behoben. – Barmar

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

Referenz closest

-1

Es besteht keine Notwendigkeit der gesamten an die Mutter überquert zurück nacheinander In einer Hierarchie können Sie einfach parents() statt parent() auf diese Weise

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

Probieren Sie es aus!

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

FIDDLE DEMO