2011-08-04 21 views
0

我有一個16個項目的列表。有4行,每行4個項目。 如何將'.first'類添加到每行的第一項,並將'.fourth'添加到每行的第四項。對每個第1和第4項應用一個班級

由於:

<ul> 
    <li class="first"></li> 
    <li></li> 
    <li></li> 
    <li class="fourth"></li> 
    <li class="first"></li> 
    <li></li> 
    <li></li> 
    <li class="fourth"></li> 
    <li class="first"></li> 
    <li></li> 
    <li></li> 
    <li class="fourth"></li> 
    <li class="first"></li> 
    <li></li> 
    <li></li> 
    <li class="fourth"></li> 
</ul> 
+1

可能你只需要nth-child()選擇器?見:http://www.w3.org/TR/css3-selectors/#nth-child-pseudo –

回答

7

試試這個:

$(function(){ 
    // You can use a more specific li selector as per your requirement 
    $("li").each(function(a, b){ 
     if(a%4 == 0){ 
      $(b).addClass("first"); 
     } 
     if(a%4 == 3){ 
      $(b).addClass("fourth"); 
     } 
    }); 
}); 

編輯:

使用第n個孩子:

$(function(){ 
    var ul = $("ul");//You can use more specific UL 
    ul.find(":nth-child(4n-3)").addClass("first"); 
    ul.find(":nth-child(4n)").addClass("fourth"); 
}); 

工作例如:http://jsfiddle.net/qmHNQ/

0

這聽起來像你想使用的CSS選擇:第n個孩子或:第n-的類型。你可以在jQuery中使用它們來添加類,或者你可以直接使用它們作爲僞類,並跳過添加額外的屬性。

0

使用每個():http://api.jquery.com/jQuery.each/

jQuery.each('ul li', function(indexInArray, valueOfElement){ 
    if ((indexInArray % 4) == 0) { $(this).addClass('first'); } 
    if ((indexInArray % 4) == 3) { $(this).addClass('fourth'); } 
}); 
0

我想知道是否可以使用「:偶數」過濾器兩次。第一次,你會得到所有那些被2整除,第二:甚至會給你的那個......除盡所有的脣上被4

$("li:gt(0):even:even").addClass("fourth"); 

要設置的第一,第五等。 。你可能會得到除了第一個之外的所有李,並將這個類應用到「第一個」。然後,設置第一個。

$("li:first").addClass("first"); 
$("li:gt(1):even:even").addClass("first"); 

好的...這是行得通的,但它看起來像是一個。這應該工作。

相關問題