使用jquery选择特定tbody中的所有复选框

时间:2014-07-07 13:48:55

标签: javascript jquery html

我有一张动态填充的表格。

主表格中有3个<tbody>部分,每个部分都有行。

每行都有一个复选框。

我想要做的是使用与<tbody> id匹配的jquery选择器。 id也是动态创建的,因此它不是常量值,而是使用变量。

我试图使用的jquery是:

$(":input[id$='_ErrorCheckbox']").click(function () {
        var wbId = $(this).attr('id').split("_")[0].toString().trim();

        $('tbody#' + wbId + ' _ErrorVisits tr td input[type="checkbox"]').prop('checked', $(this).prop('checked'));
    });

我也尝试使用此语句来获取<tbody>中的行,但它不起作用(引发了未知的语法错误):

$('tbody[id$=' + wbId + ' _ErrorVisits] tr td input[type="checkbox"]').prop('checked', $(this).prop('checked'));

上面的第一种方法,不会抛出任何错误,但不会选择任何错误。

使用jquery选择器使用其id获取特定<tbody>元素的正确方法是什么?

编辑: 这是html表输出:

<table id="workbookTable_25116" cellpadding="10">
                    <thead>
                        <tr>
                            <th><input type="checkbox" id="25116 _SelectAllCheckbox"></th><th>Visit Timepoint</th><th>Visit Information</th><th>Notifications/Errors</th><th>Preview SQC Analysis</th>
                        </tr>
                    </thead>
                    <tbody id="25116 _ErrorVisits">
                        <tr><td></td><td></td><td></td><td></td></tr>
                        <tr><td><input type="checkbox" id="25116 _ErrorCheckbox"></td><td><b>Visits in Error</b></td><td></td><td></td></tr><tr style="background-color: red;"><td><input type="checkbox" id="9be44178-7273-4057-9607-acb135114b39 _25116 _Checkbox" name="visit_cb"></td><td>Week 8</td><td>1008-001, Week 8, 14005_MRI_Femur v1.0</td><td>This visit has a task in Error status!</td><td><input type="button" id="9be44178-7273-4057-9607-acb135114b39 _25116 _ResetTaskButton" value="Reset Task"></td></tr><tr style="background-color: red;"><td><input type="checkbox" id="367e7f6a-ec3a-476f-a1e3-b3eecf18db8b _25116 _Checkbox" name="visit_cb"></td><td>Week 16</td><td>1008-001, Week 16, 14005_MRI_Femur v1.0</td><td>This visit has a task in Error status!</td><td><input type="button" id="367e7f6a-ec3a-476f-a1e3-b3eecf18db8b _25116 _ResetTaskButton" value="Reset Task"></td></tr>
                    </tbody>
                    <tbody id="25116 _NotPreviouslySQCvisits">
                        <tr><td></td><td></td><td></td><td></td></tr>
                        <tr><td><input type="checkbox" id="25116 _NotSQCCheckbox"></td><td><b>First Time SQC Visits</b></td><td></td><td></td></tr><tr style="background-color: yellow;"><td><input type="checkbox" id="d38bc66a-561e-4a12-9d95-4979eb3e9b9b _25116 _Checkbox" name="visit_cb"></td><td>Week 4</td><td>1008-001, Week 4, 14005_MRI_Femur v1.0</td><td></td><td><input type="button" id="d38bc66a-561e-4a12-9d95-4979eb3e9b9b _25116 _PreviewButton" value="SQC Analysis Preview"></td></tr>
                    </tbody>
                    <tbody id="25116 _PreSQCvisits">
                        <tr><td></td><td></td><td></td><td></td></tr>
                        <tr><td><input type="checkbox" id="25116 _PreSQCCheckbox"></td><td><b>Previously SQC Visits</b></td><td></td><td></td></tr><tr style="background-color: greenyellow;"><td><input type="checkbox" id="25d62e5f-b69d-4f87-aaaa-09c44e06f1cb _25116 _Checkbox" name="visit_cb"></td><td>Week 12</td><td>1008-001, Week 12, 14005_MRI_Femur v1.0</td><td></td><td><input type="button" id="25d62e5f-b69d-4f87-aaaa-09c44e06f1cb _25116 _PreviewButton" value="SQC Analysis Preview"></td></tr>
                    </tbody>
                </table>

编辑: 找到解决方案,需要在id附近引用。请参阅下面的答案以获取代码。 感谢所有人的帮助。

2 个答案:

答案 0 :(得分:4)

应更改以下行:

$('tbody[id$=' + wbId + ' _ErrorVisits] tr td input[type="checkbox"]').prop('checked', $(this).prop('checked'));

要:

$('tbody[id$=' + wbId + '_ErrorVisits] tr td input[type="checkbox"]').prop('checked', $(this).prop('checked'));

那是:将' _ErrorVisits]替换为'_ErrorVisits]

注意:我不会建议id's使用空格,但空格可以按照以下方式转义为 快速修复 < /强>:

wbId替换为wbId.replace(/ /g, '\\\\ ')

理想的解决方案是修复ID以删除空格。

答案 1 :(得分:0)

对不起大家,但事实证明我在id选择器周围缺少引号。

这是最终的jquery代码:

$("tbody[id$='" + wbId + " _ErrorVisits'] tr td input[type='checkbox']").prop('checked', $(this).prop('checked'));

需要在id周围放置引号以防止语法错误,因为id中包含空格。