在jQuery中选择特定的tds

时间:2011-05-19 06:26:34

标签: jquery jquery-selectors

如果行包含特定值,我想检查表的复选框。

以下是我的表

<table width="100%" cellspacing="0" border="1" style="border-width: thin; border-collapse: collapse;
    border-color: #999999" id="tableControlFailures">
    <tbody>
        <tr>
            <td style="border-width: thin; border-collapse: collapse; border-color: #999999">
                <input type="checkbox" id="chkCF">
            </td>
            <td style="border-width: thin; border-collapse: collapse; border-color: #999999">
                C1
            </td>
            <td style="border-width: thin; border-collapse: collapse; border-color: #999999"
                id="tdCFReason">
                <input type="text" id="txtCFReason" style="width: 90%" disabled="disabled">
            </td>
            <td id="CFId" style="display: none">
                22
            </td>
        </tr>
        <tr>
            <td style="border-width: thin; border-collapse: collapse; border-color: #999999">
                <input type="checkbox" id="chkCF">
            </td>
            <td style="border-width: thin; border-collapse: collapse; border-color: #999999">
                C2
            </td>
            <td style="border-width: thin; border-collapse: collapse; border-color: #999999"
                id="tdCFReason">
                <input type="text" id="txtCFReason" style="width: 90%" disabled="disabled">
            </td>
            <td id="CFId" style="display: none">
                23
            </td>
        </tr>
        <tr>
            <td style="border-width: thin; border-collapse: collapse; border-color: #999999">
                <input type="checkbox" id="chkCF">
            </td>
            <td style="border-width: thin; border-collapse: collapse; border-color: #999999">
                c
            </td>
            <td style="border-width: thin; border-collapse: collapse; border-color: #999999"
                id="tdCFReason">
                <input type="text" id="txtCFReason" style="width: 90%" disabled="disabled">
            </td>
            <td id="CFId" style="display: none">
                9
            </td>
        </tr>
    </tbody>
</table>

我想检查隐藏列CFId包含23和&amp;的行。 9。

请建议解决方案。

4 个答案:

答案 0 :(得分:1)

非常重要的是,正如其他人也提到的那样:

ID只能在HTML文档中使用ONCE。在标记中,您多次使用ID,这根本无效,会破坏CSS和Javascript功能。如果要将某些元素分配到同一逻辑组,请改用class。在将这些ID更改为类之后,我的解决方案正常工作(如jsFiddle中所示)。

$('#tableControlFailures tr').filter(function () {
    return $(this).find('td.CFId:contains(23), td.CFId:contains(9)').length > 0;
}).find('input.chkCF').attr('checked', true);

jsFiddle Demo

  1. 它获取表格中的所有行
  2. 使用过滤功能对其进行过滤,只有那些内容为td.CFId的内容包含23或9
  3. 在剩余的行集中,找到复选框并进行检查
  4. 注意:我的解决方案是为jQuery 1.5.2编写的。在1.6中,您应该使用.prop('checked', true)而不是.attr('checked', true)

答案 1 :(得分:0)

我建议你在标记上做一些修改。您正在为表格单元重复id id =“CFId”而不是尝试class =“CFId”。 JQuery提供了使用CSS规则读取此类元素的解决方案。因此,您应该能够使用“td.CFId”css规则读取具有类CFId类的表格单元格。

然后迭代它并检查值。要到达行,您可以尝试ele.parentNode进行CSS修改,以根据值更改颜色和背景。

//to change the color based on some value
if($(cell).innerHTML === '23') {
    $(cell).parentNode.style.color = 'red'
}

除非您不想坚持使用JQuery,否则此解决方案应该适用于JQuery API和简单的JavaScript。

答案 2 :(得分:0)

试试这个

$("#tableControlFailures").find("td:contains('22'), td:contains('23')").parent("tr").find("#chkCF").prop("checked", true);

JS FIDDLE

的示例

但是,正如其他人所说的那样,你应该改变你的td以获得唯一的id并使用该类来分组元素。设置唯一ID后,我的解决方案仍然有效

答案 3 :(得分:-1)

$("table").find("td:contains('23'),td:contains('9')").find(":checkbox").attr("checked",true);'