2010-01-02 56 views
1

我成功地使用jQuery的奇数/偶数选择器创建一个“虎条” 表中。然后我添加了添加或删除行的功能。不过,我并不是 能够使条带在添加/删除行时正常工作。它适用于添加/附加,但不适用于添加/前缀或删除。下面是代码的总结...jquery奇数/偶数问题prepend/append

$(document).ready(function(){ 

    // click on Add Row button 
    $("#addButton").click(function(){ 
     // add a row to table 
     addTableRow('#myTable');       
     // then re-apply tiger striping 
     stripeRows(); 
    }); 
}); 


// remove specified row 
function removeRow(row) { 
    $(row).parent("tr").remove(); 
    stripeRows(); 
} 


function StripeRows() 
{ 
    $("#myTable").each(function(){ 
     $(this).find("tr:even").addClass("evenrow"); 
     $(this).find("tr:odd").addClass("oddrow"); 
    }); 
} 

回答

0

您需要首先清除先前的分拆:

function StripeRows() 
{ 
    $("#myTable").each(function(){ 
     $(this).find("tr").removeClass('evenrow oddrow'); 
     $(this).find("tr:even").addClass("evenrow"); 
     $(this).find("tr:odd").addClass("oddrow"); 
    }); 
} 

否则你会同时具有evenrowoddrow类行结束。

5

这可能不起作用,可能是因为你没有删除旧的类。

我有两点建议:

  1. 不要使用:even:odd。这些通常不会达到您的预期。分别使用:nth-child(even):nth-child(odd);和
  2. 不要同时存在奇数类。你不需要他们两个。只需使用一个奇怪的(或者甚至是)课堂,让桌子的风格覆盖另一个案例。

所以,你应该做这样的事情:

function StripeRows() { 
    $("#mytable > tbody > tr").removeClass("oddrow") 
    .filter(":nth-child(odd)").addClass("oddrow"); 
} 

此功能,从下表中的所有行删除“oddrow”类,然后添加“oddrow”班奇表中的行。

如果你还是想oddrow/evenrow(恕我直言,这只是增加了额外的不必要的代码),它是没有太大的变化:

function StripeRows() { 
    $("#mytable > tbody > tr").removeClass("oddrow evenrow") 
    .filter(":nth-child(odd)").addClass("oddrow") 
    .end().filter(":nth-child(even)").addClass("evenrow"); 
} 
+0

辉煌!谢谢。 – rshid 2010-01-02 02:23:46

0

也许你应该先试试这个?

$(this).find("tr").removeClass();