使用filter方法中的表达式在表行中Jquery多个选择单元格

时间:2012-08-20 15:30:03

标签: jquery jquery-ui jquery-plugins

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

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

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

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

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

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

在下面的代码中,结果可能是(第1到第8个单元格除了第一个的第5个单元格)和(第1个单元格第6个单元格第7个单元格用于第二个

<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>

谢谢。

3 个答案:

答案 0 :(得分: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); })

我不知道你想要做多少硬编码,但这是一种方法。

答案 1 :(得分:1)

这可能有所帮助:

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

http://jsfiddle.net/NNNqF/

答案 2 :(得分: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),这意味着“选择索引小于1的td”。同样,要选择最后一个,你必须使用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)链接时,索引现在相对于从之前的gt,这意味着您要求接下来的3个项目。