如何使用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');
});
});