Jquery,如何在删除表行后保持表行颜色?

时间:2011-02-28 18:06:55

标签: jquery onclick

对不起,如果标题没有意义,基本上我有一堆像这样的表行:

<table>
<tr class="odd">
<td><button class="button_clicked">Hide row</button></td>
</tr>
<tr class="even">
<td><button class="button_clicked">Hide row</button></td>
</tr>
<tr class="odd">
<td><button class="button_clicked">Hide row</button></td>
</tr>
<tr><td class="notes"</td></tr>
</table>

每个tr都有一个类,奇数是白色背景,甚至有灰色背景。我使用jquery,如果单击其中一个td中的按钮,则隐藏单击按钮的整个tr行。一些表行在其后面有一个额外的tr用于注释,因此jquery也会检测是否存在,如果是,则同时删除该tr。但现在的问题是,如果我隐藏了一个灰色背景的tr,它下面的表格行出现了,现在我有2个白色的表行,打破了表行的奇数/偶数设计。所以我尝试在下面编写额外的代码来进行额外的检查,但它会阻止脚本工作。它不会给我一个错误,它只是显示脚本已中止,有任何建议吗?

        $('.button_clicked').click( function(e) {

        var row = $(this).closest('tr');

        // hide this row first
        row.hide();

        // next, get the next TR, see if it is a notes row, and hide it if it is
        var nxt = row.next();

        if (nxt.hasClass('show_notes')) {

            nxt.hide();

        }else
        {

            if (nxt.hasClass('odd')) {

                nxt.attr('class','even');

            }else
            {

                nxt.attr('class','odd');

            }

        }

        e.preventDefault();

    });

1 个答案:

答案 0 :(得分:1)

尝试这样做

if (nxt.hasClass('show_notes')) {
    nxt.hide();
}
else {
    row.nextAll('tr').toggleClass('odd even');
}