使用字符串数组检查复选框

时间:2014-07-03 14:01:07

标签: javascript jquery web

用户可以提供一个字符串数组,我想查看一个表,并在找到其中一个字符串时检查表格行的assosiated复选框。

我可以看到$("#activelisttable tr:contains(" + substr[i] + ")")包含<tr>,但它只是放在.each函数中。

以下是完整代码:

     $("#savelistactive").click(function() {
            var substr = $("#listtextactive").val().split("\n");
            for (var i = 0; i < substr.length; i++) 
            {
                $("#activelisttable tr:contains(" + substr[i] + ")").each(function(item) {
                    $(this).children("input").prop('checked', true);
                });
            }
            $("#background").fadeOut("slow");
            $("#listactive").fadeOut("slow");
        });

小提琴链接:http://jsfiddle.net/5WVwe/

1 个答案:

答案 0 :(得分:1)

问题回顾:

问题在于for循环中的选择器。 @NobleMushtak 建议您将original fiddle中的.each()更改为:

$("#activelisttable tr:contains(" + substr[i] + ")").children("input").prop('checked', true);

这是一个很好的建议。但是,如果没有看到您的标记,则不清楚您使用的确切HTML结构。根据你的小提琴,你的HTML标记包含<tr>,然后在其中包含<th>

        <tr>
            <th>
                <input type="checkbox" class="selectall" />
            </th>
            <th>name</th>
        </tr>

这意味着类型为.children()的{​​{1}}没有<tr>

解决方案:

input更改为.children()

.find()

$("#activelisttable tr:contains(" + substr[i] + ")").find("input").prop('checked', true); 所有嵌套元素进行了深入搜索,而.find()只会遍历另一个图层。

适应变化。

Updated JSFiddle

参考文档:

.find()

.children()