o ana

2013-08-30 25 views
9

Ben bir elementin üst bulmaya çalışıyorum var üst öğesini ve ilk çocuğu bulun ve ebeveyn ilk bebeği, kod şu şekildedir:o ana

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

Ben biraz karışık olduğunu biliyorum ama ben değilim jquery'ye yeni, yani yapmaya çalıştığım şey, 'seçili' sınıfın son unsura ulaşmasından sonra onu kaldırmak ve ilk elemana ayarlamaktır. Bununla denedim ama

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

çalışıyor ve son öğeye aldığında aralık iki defa yürütme ve sonra durur görünmüyor. Bu i üzerinde çalışıyorum site: Eğer iki seviye yukarı gitmek, daha sonra bir sonraki çocuğu bulmak

http://nikodola.com/testsite

cevap

18

, sadece aşağı bir seviye gidiyoruz - Size' selected sınıfının, aşağıdaki <a> altında ayarlanmıyor. Başka bir seviyeye gitmeniz gerekiyor. Yani bu olmalıdır:

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

almak için başka bir yol yoktur:

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

mükemmel, çok teşekkür ederim: D ben o –

+0

benim gibi çalışma değildi çünkü o() i (çocuk koymak) küçük ve aptal .. ancak bunun yerine çocuk bir şey olduğunu biliyordum Bu yazım hatamı zaten çözdüm. – Barmar

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

referans closest

-1

birbiri ardına ebeveyn biri geri kateden toplamın gerek yoktur Bir hiyerarşide, parent() yerine parents()'u bu şekilde kullanabilirsiniz

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

Bunu deneyin!

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

FIDDLE DEMO