2011-10-06 124 views
20

所以我saw this question就在這個SO,它讓我思考。這是偶數還是奇數?

基本上OP不得不沿着這些路線

<div>a</div> 
<div>b</div> 
<div>c</div> 
<div>d</div> 
$('div').each(function() { 
    //do something different based on whether even or odd div 
    if ($(this) == ':even') {} //invalid markup I know! 
    else {} 
}); 

有沒有辦法告訴你.each()當前元素是否是奇數還是偶數實例裏面的東西?

有jQuery的.filter方法,但它總是返回true時,它有一個單一的元素。

我也意識到你可以使用nth-child選擇器或以其他方式設置它,但我很好奇這個特定的情況。

+1

它已經在這個問題的答案。看看最後一個代碼片段:http://stackoverflow.com/questions/7679003/jquery-tigerstipe-rollover-conundrum/7679027#7679027 – BoltClock

+0

@BoltClock - 謝謝,我錯過了更新。 – mrtsherman

回答

50

回調.each傳遞元素的索引和元素:

$('div').each(function(i, el) { 
    // As a side note, this === el. 
    if (i % 2 === 0) { /* we are even */ } 
    else { /* we are odd */ } 
}); 
+4

+1。你擊敗了我2秒。 :) – Shef

+0

謝謝我沒有意識到它有索引回調! http://jsfiddle.net/mrtsherman/EjduK/ – mrtsherman

9
$('div').each(function(index) { 
    //do something different based on whether even or odd div 
    if (index % 2 == 0) {} // even 
    else {} // odd 
}); 
+0

實際上你都有同樣的時間:) –

6

如果你知道所有的元素都是相同的父的孩子,你可以使用提供的每個指標

$('div').each(function(index) { 
    if (index%2 == 0) {} 
    else {} 
}); 

否則,使用index函數將計算其兄弟姐妹之間的元素的索引。

$('div').each(function() { 
    if ($(this).index()%2 == 0) {} 
    else {} 
}); 
+0

+1 - 感謝您向我展示.index()方法。一個新的我! – mrtsherman

2

使用jQuery API .is(selector)

$('div').each(function() { 
    //Check if element is even 
    if ($(this).is(":even")) { 
    } 

    //Check if element is odd 
    if ($(this).is(":odd")) { 
    } 

}); 
+0

這似乎並不奏效。另一位用戶提供了相同的解決方案,並從此刪除了答案。從邏輯上看,它確實看起來很有前景,但並沒有出現。 http://jsfiddle.net/mrtsherman/EjduK/1/ – mrtsherman

+0

@ mrtsherman:謝謝,是的,我再次檢查,發現它不適用於jquery版本<1.10.1。你的jsfiddle鏈接中有jquery 1.6.3。 –

相關問題