2012-12-09 20 views
1

我甚至不知道如何解釋我的問題 - 這就是奇怪的標題來自哪裏。 我有一個ul包裝另一個ul像下面的樣品。jQuery each:遍歷每一個li的集合

<ul class="event-items"> 
    <li class="year 2012"></li> 
    <li class="year 2011"></li> 
    <li class="year 2010"> 
     <ul> 
     <li></li> 
     <li></li> 
     <li></li> 
     </ul> 
    </li> 
<li class="year 2010"></li> 
… 

enter image description here

所以每個li.year有另一個<ul>多個孩子裏。

現在我的問題:

我不知道我可以通過eachli.year單獨運行。

現在我做這個...

$('ul.event-items li.year ul li').each(function(i) { 
    if (i % 4 == 0) $(this).addClass('clearLeft'); 
}); 

然而,這each循環通過ALL <li> S啓用。我想知道如何分別運行每個li:year li。聽起來很奇怪嗎?

所以其實我是想通過每一個li.year單獨循環,使我i計數總是從每個li.year

回答

5

使用嵌套循環內的新鮮單獨遍歷每個內ul的孩子:

$('ul.event-items li.year ul').each(function() { 
    $("li", this).each(function(i) { 
     if (i % 4 == 0) 
      $(this).addClass('clearLeft'); 
    }); 
}); 
+0

就是這樣。必須工作 –

0

這是你的意思?

$('ul.event-items li.year').each(function(i) { 
    if (i % 4 == 0) $(this).find('ul li').addClass('clearLeft'); 
}); 
0

或者,您也可以使用.index()

$('ul.event-items li.year ul li').each(function() { 
    var $this = $(this); 
    if ($this.index() % 4 == 0) $this.addClass('clearLeft'); 
}); 

.index()將返回各自li的指數相對於它的父,ul