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