如何使用jquery迭代选择器的结果

如何使用jquery迭代选择器的结果,jquery,selector,Jquery,Selector,我有一些复选框,当选中多个复选框时,我想更改它们的背景色。我试着这样做: var checked = $("input[@type=checkbox]:checked"); $('tr[name="' + checked.attr('name') + '"]').each(function() { $(this).css('background-color', '#0000DD'); }); 只有第一个选择

我有一些复选框,当选中多个复选框时,我想更改它们的背景色。我试着这样做:

var checked = $("input[@type=checkbox]:checked");
$('tr[name="' + checked.attr('name') + '"]').each(function() {
                        $(this).css('background-color', '#0000DD');
                    });
只有第一个选择的更改是颜色,另一个选择的更改是否,您能帮我吗?选择器是否只给出第一个输出

以这种方式解决:

$("input[type=checkbox]:checked").parents('tr').css('background-color', '#0000DD');

jQuery不是XPath。省略
@
。另外,
.css
方法将样式应用于集合中的所有元素,因此可以省略
。每个

var checked = $("input[type=checkbox]:checked");
$('tr[name="' + checked.attr('name') + '"]').css('background-color', '#0000DD');
编辑:我认为您误解了方法逻辑。
如果要更改容器
元素的样式,必须循环检查复选框集合中的每个元素,并在其上运行一些代码:

$("input[type=checkbox]:checked").each(function() {
    $(this).closest('tr').css('background-color', '#0000DD');
});

.attr将只返回第一个匹配元素的属性。您必须遍历第一个选择器的结果(并选择不带@的属性):


[@type=checkbox]
替换为
[type=checkbox]
或仅替换为“:checkbox”。试试这个

$("input:checkbox:checked").each(function(){
     $('tr[name="' + this.name + '"]').each(function() {
          $(this).css('background-color', '#0000DD');
     });
});

@JackTurky在看了你的答案后,在1小时前更新了答案。您当前的方法(使用
.parents()
不如推荐的
.closest()
方法。
.closest()
选择最近的父级,并停止进一步查看。
parents()
遍历整个树,并在文档顶部停止。
$("input:checkbox:checked").each(function(){
     $('tr[name="' + this.name + '"]').each(function() {
          $(this).css('background-color', '#0000DD');
     });
});