jquery中的备用行着色

时间:2009-06-11 06:42:57

标签: jquery dom rows

我有一个扩展和折叠行的表,列可排序。 以下是我的代码,是否有任何方法可以改善其性能。 并且读取将完整的行组添加到dom中可以提高性能,但是如果我执行了$ .each()循环则会抛出错误。 teble demo

var alt = true;
var altSub = true;

$.each(myData, function(index, row) {

    var noRow = $(row).length;
    var firstRow = $(row[0]);

    for (var i=0; i < noRow; i++) {
        if(firstRow.attr('id') == $(row[i]).attr('id')) {
            if(alt == true) {
                firstRow.removeClass("odd").addClass("even");
                alt = !alt;
                altSub = true;
            } else if( alt == false) {
                firstRow.removeClass("even").addClass("odd");
                alt = !alt;
                altSub = true;
            }
        } else {
            if(altSub == true) {
                $(row[i]).removeClass("alt_row_sub").addClass("alt_row_sub2");
                altSub = !altSub;
            } else if( altSub == false) {
                $(row[i]).removeClass("alt_row_sub2").addClass("alt_row_sub");
                altSub = !altSub;
            }
        }
    }
    $table.children('tbody').append(row);
});

link text

3 个答案:

答案 0 :(得分:15)

您可能会发现:even:odd选择器很有用。

然后您可以像这样使用它们:

$('.stripyTable tr:even').addClass('even');
$('.stripyTable tr:odd').addClass('odd');
$('.stripyTable .submenu tr:even').addClass('alt_row_sub');
$('.stripyTable .submenu tr:odd').addClass('alt_row_sub2');

要考虑的另一件事是你是否可以使用CSS获得子部分的不同样式,然后在你的JS中你只需要担心应用奇数/偶数类。 CSS可能看起来像:

.odd { background-color: blue; }
.even { background-color: white; }
.sub .odd { background-color: green; }
.sub .even { background-color: yellow; }

答案 1 :(得分:2)

来自jQuery的

Tutorials:Zebra Striping Made Easy是关于如何进行斑马条纹的一个很棒的教程。

答案 2 :(得分:0)

你在每个循环中,执行此操作:

$.each(myData, function(index, row) {

       if(index % 2 == 0)
       {
            row.addClass("AltRow");
       }
)};