我有一个表格,其中每一行以“复选框”开头,我想获得包含复选框的所有TR,并检查它。
这样的事情:
$('#' + tableId + ' > tbody > tr:contains(td > input[type=checkbox]:checked').each(function (i, item) {
alert('delete ' + $(item).data('row-id'));
});
该代码不起作用,它会卡住。可能是因为“包含”选择器仅用于文本。我怎么能这样做?
问候。
答案 0 :(得分:2)
使用jQuery的has:
$('#' + tableId + ' > tbody > tr:has(td > input[type=checkbox]:checked)').each(function (i, item) {
alert('delete ' + $(item).data('row-id'));
});
为了获得更好的性能(请参阅jQuery API文档),请使用:
$('#' + tableId + ' > tbody > tr')
.filter(':has(td > input:checkbox:checked)').each(function (i, item) {
alert('delete ' + $(item).data('row-id'));
});
由于has
查询无法通过querySelectorAll()
运行,因此无需使用[type=checkbox]
。
答案 1 :(得分:0)
您不需要:contains
选择器。
如果您希望它位于<tr>
内的任何位置(甚至是嵌套元素内部)
$('#' + tableId + ' > tbody > tr td > input[type=checkbox]:checked').each(function (i, item) {
如果你想直接把它放在里面
$('#' + tableId + ' > tbody > tr > td > input[type=checkbox]:checked').each(function (i, item) {
答案 2 :(得分:0)
您可以抓住复选框,然后找到最近的tr
:
$('#' + tableId + ' > tbody > tr > td > input[type=checkbox]:checked').closest("tr")
注意,您还缺少)
来关闭contains
。