編輯:在速度,最高效的jQuery溶液而言(沒有sacrifying可讀性):
$("li").each(function(i){
i = i % 4;
if (i <= 1) { // In this context, Equivalent to i == 0 || i == 1
$(this).addClass("blue"); // If you're going to use multiple
// $(this)s, cache the variable.
} else { // Since we're calculating modulo 4, the ELSE condition
$(this).addClass("red"); // is equivalent to i == 2 || i == 3
}
});
使用模運算符的集合LIS的減少到4(0,1 ,2,3)。然後,使用
.filter()
方法將兩個子集中的集合分開。
演示:http://jsfiddle.net/pN5HT/1/
var allLi = $("li");
var li12 = allLi.filter(function(i){
i = i % 4;
return i == 0 || i == 1; // Or return i <= 1;
});
var li34 = allLi.filter(function(i){
i = i % 4;
return i == 2 || i == 3; // Or return i >= 2;
});
// Simple demo:
li12.css('background-color','blue');
li34.css('background-color','red');
而不是硬編碼在JavaScript的風格,我建議使用類名來代替:
.blue {background-color:blue;}
.red {background-color:red;}
/*JavaScript:*/ li12.addClass("blue");
給一些細節 – Dau 2011-12-23 09:48:05