1

我想知道如何使用 jquery过滤器方法来做这些事情:

在表格行中选择单元格 1 到 4 和 6 到 8。

或者

在该表的 TR 中选择单元格 1 和单元格 6 到 8。

我已经测试了这些方法,但它们没有用。

对于第一个: filter('gt(2):lt(4),gt(7):lt(8))'

对于第二个: filter('eq(2),gt(7):lt(8)')

在下面的代码中,结果可能类似于(第一个单元格编号 1 到 8,不包括单元格 5)和(第二个单元格 1 单元格 6 单元格 7 单元格 8

<table cellpadding="0" cellspacing="0" border="0" class="display" id="selection">
    <tbody>
        <tr>

            <td>cell1</td>
            <td>cell2</td>
            <td>cell3</td>
            <td>cell4</td>
            <td>cell4</td>
            <td>cell5</td>
            <td>cell6</td>
            <td>cell7</td>
                        <td>cell8</td>
        </tr>   
    </tbody>
</table>

谢谢你。

4

3 回答 3

1

您可以使用 jquery 过滤器。

// exclude 5th column (zero based indexes)
$(your_selector_to_cels).filter(function(index) { return index != 4; })

// get only column 1, 6, 7, 8
$(your_selector_to_cels).filter(function(index) { return index == 0 || (index >= 5 && index <= 7); })

我不知道你想如何硬编码,但这是一种方法。

于 2012-08-20T15:45:32.917 回答
1

这可能会有所帮助:

$('TABLE TD').slice(1, 9).not(':eq(4)').css({'color': '#f00'});

http://jsfiddle.net/NNNqF/

于 2012-08-20T15:45:37.523 回答
1

您可以使用此选择器:

$('#selection tr:eq(0)').find('td:lt(4), td:gt(4):lt(3)')

第一部分$('#selection tr:eq(0)')确保您仅选择特定行中的单元格(在本例中为第 0 行,即第一个)。

关于第 2 部分的几点说明:

  1. 用于find在先前返回的 jQuery 对象中进行选择。
  2. gtlt选择器是基于零索引的。因此,为了选择第一个单元格,您使用'td:lt(1)这意味着“选择td索引小于 1 的单元格”。同样,要选择最后一个,您必须使用td:gt(8)这意味着“选择td索引大于 8(因为它是从零开始的,10 个元素从 0 到 9,因此 9 是最后一个)。
  3. 您可以有多个选择器,以 . 分隔,。所以'td:lt(1), td:gt(8)'会给你第一个和最后一个单元格
  4. 最后但并非最不重要的一点是,当您链接gtlt. 请注意,要获得 6、7 和 8,选择器是td:gt(4):lt(3). gt(4)将获得索引大于 4 的单元格(请记住,在零索引集合中,索引 5 是第六个项目)并且当您使用:lt(3)索引链接时,现在与从 previous 返回的值相关gt,这最终意味着您在问对于接下来的 3 个项目。
于 2012-08-20T16:09:39.347 回答