jquery nextAll并跳过第一个元素

时间:2010-11-16 11:22:15

标签: jquery jquery-selectors

我需要在第一个子TD上为每个TR添加一个click事件,其类为“topRow”,用“subRow”类切换所有下一个TR行,在TR.topRow下滑动第一个TR。

表格示例

<table>
    <tr class="topRow">
        <td>text</td>
        <td>Text</td>
        <td>Text</td>
    </tr>
    <tr class="otherRow">
        <td colspan="3">Text</td>
    </tr>
    <tr class="subRow">
        <td>text</td>
        <td>Text</td>
        <td>Text</td>
    </tr>
    <tr class="subRow">
        <td>text</td>
        <td>Text</td>
        <td>Text</td>
    </tr>
    <tr class="topRow">
        <td>text</td>
        <td>Text</td>
        <td>Text</td>
    </tr>
    <tr class="otherRow">
        <td colspan="3">Text</td>
    </tr>
    <tr class="topRow">
        <td>text</td>
        <td>Text</td>
        <td>Text</td>
    </tr>
    <tr class="otherRow">
        <td colspan="3">Text</td>
    </tr>
    <tr class="subRow">
        <td>text</td>
        <td>Text</td>
        <td>Text</td>
    </tr>
    <tr class="subRow">
        <td>text</td>
        <td>Text</td>
        <td>Text</td>
    </tr>
    <tr class="subRow">
        <td>text</td>
        <td>Text</td>
        <td>Text</td>
    </tr>
    <tr class="subRow">
        <td>text</td>
        <td>Text</td>
        <td>Text</td>
    </tr>
</table>

我现在有jquery

$("tr.topRow td:first-child").click(function () {
    $(this).parent().nextUntil('tr:not(tr.subRow):gt(1)').slideToggle();
});

我试过的另一件事

$("tr.topRow td:first-child").click(function () {
    $(this).parent().nextUntil('tr:gt(1):not(tr.subRow):gt(1)').slideToggle();
});

但我没有得到所需的结果。

1 个答案:

答案 0 :(得分:3)

你可以在那里抛出一个.next()来跳过(这也简化了事情),如下所示:

$("tr.topRow td:first-child").click(function () {
  $(this).parent().next().nextUntil('tr.topRow').slideToggle();
});

You can test it out here