如何获取具有特定子项的项目列表?

我有一个表,其中每一行以“复选框”开头,我想获得包含复选框的所有TR,并检查它。

像这样的东西:

$('#' + tableId + ' > tbody > tr:contains(td > input[type=checkbox]:checked').each(function (i, item) { alert('delete ' + $(item).data('row-id')); }); 

该代码不起作用,它被卡住了。 可能是因为“contains”选择器仅用于文本。 我怎么能这样做?

问候。

使用jQuery 有 :

 $('#' + 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]

您不需要:contains选择器。

如果你想要它在

内的任何地方(甚至在嵌套元素内)

 $('#' + tableId + ' > tbody > tr td > input[type=checkbox]:checked').each(function (i, item) { 

如果你想直接在里​​面

 $('#' + tableId + ' > tbody > tr > td > input[type=checkbox]:checked').each(function (i, item) { 

你可以抓住复选框,然后找到他们最近的tr

 $('#' + tableId + ' > tbody > tr > td > input[type=checkbox]:checked').closest("tr") 

注意,你也缺少)关闭contains