用户可以提供一个字符串数组,我想查看一个表,并在找到其中一个字符串时检查表格行的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");
});
答案 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()
只会遍历另一个图层。
适应变化。
参考文档: