jQuery选择器返回重复的元素

时间:2011-08-26 08:56:46

标签: javascript jquery html-table row

我正在尝试用jQuery从表中选择除第一个(列标题)之外的所有行,为此我有这个选择器:

$("#tableID tr:not(:first)")

有三行,一列用于列标题,两列用于内容,选择器返回4,但如果我这样做:

$("#tableID tr")

它返回三行就好了。我在选择器中遗漏了什么吗?

如果它有帮助我制作了截图:

给我问题的代码就是这个(这很简单,我不明白为什么它不起作用)

    function addTableColumn() {
        var uls = $('#debate ul').length;
        $('#debate tr:first ').append("<th id='foo'>foo title</th>");    
        $("#debate tr:not(#debate tr:first)").append("<td><ul id='sortable" + (uls+1) + "' class='connectedSortable'></ul></td>").hide().fadeIn("slow");
        alert("I'm seeing " + $('#debate tr:not(:first)').length + " rows (without first row), type: " + $('#debate tr:not(:first)')[0] + " but the row count returns (including titles) " + $('#debate tr').length);
        makeSortable();
    }

3 个答案:

答案 0 :(得分:5)

如果它是标题行,我建议将标记改为:

<table>
    <thead>
        <tr>
            <th>Title</th>
            <th>Title</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Content</td>
            <td>Content</td>
        </tr>
        <tr>
            <td>Content</td>
            <td>Content</td>
        </tr>
        <tr>
            <td>Content</td>
            <td>Content</td>
        </tr>
    </tbody>
</table>

然后,在你的CSS / jQuery中,只选择<tr>中的<tbody>,这样也会更加语义化。

答案 1 :(得分:1)

我会用

$('#tableID tr:gt(0)')

但你有什么应该工作!

答案 2 :(得分:-1)

$("#tableID tr:not(:first)")效果很好。