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

发布于 2025-01-05 07:35:00 字数 451 浏览 0 评论 0原文

我有一些复选框,当选择多个复选框时,我想更改它们的背景颜色。我正在尝试这样:

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');

i've some checkbox and i want to change background color of them when are selected more than one checkbox. I'm trying from this way:

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

only the first selected changes is color and the other selected no, can you help me? does selector give in output only the first?

SOLVED IN THIS WAY:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

弄潮 2025-01-12 07:35:00

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

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');
});

jQuery is not XPath. Omit the @. Also, the .css method applies the style to all elements ib the collection, so you can omit .each.

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

Edit: I think that you misunderstand the method logic.
If you want to change the style of the container <tr> element, you have to loop through every element in the checkbox collection, and run some code on it:

$("input[type=checkbox]:checked").each(function() {
    $(this).closest('tr').css('background-color', '#0000DD');
});
深爱成瘾 2025-01-12 07:35:00

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

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

.attr will only return the attribute of the first matched element. You have to traverse the result of the first selector (and also select the attribute without an @):

var checked = $("input[type=checkbox]:checked").each(function() {
    $('tr[name="' + $(this).attr('name') + '"]').css('background-color', '#0000DD');
});
甜妞爱困 2025-01-12 07:35:00

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

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

Replace [@type=checkbox] by [type=checkbox] or just ':checkbox`. Try this.

$("input:checkbox:checked").each(function(){
     $('tr[name="' + this.name + '"]').each(function() {
          $(this).css('background-color', '#0000DD');
     });
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文