как перебрать результат селектора с помощью jquery - PullRequest
0 голосов
/ 15 февраля 2012

У меня есть несколько флажков, и я хочу изменить цвет фона их, когда выбрано более одного флажка. Я пытаюсь из этого способа:

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

Ответы [ 3 ]

2 голосов
/ 15 февраля 2012

jQuery не XPath.Опустить @.Кроме того, метод .css применяет стиль ко всем элементам в коллекции, поэтому вы можете опустить .each.

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

Редактировать: я думаю, что вы неправильно понимаете логику метода.Если вы хотите изменить стиль элемента контейнера <tr>, вам нужно перебрать все элементы в коллекции флажков и запустить на нем некоторый код:

$("input[type=checkbox]:checked").each(function() {
    $(this).closest('tr').css('background-color', '#0000DD');
});
0 голосов
/ 15 февраля 2012

Заменить [@type=checkbox] на [type=checkbox] или просто ': checkbox`. Попробуйте это.

$("input:checkbox:checked").each(function(){
     $('tr[name="' + this.name + '"]').each(function() {
          $(this).css('background-color', '#0000DD');
     });
});
0 голосов
/ 15 февраля 2012

.attr будет возвращать только атрибут первого соответствующего элемента.Вы должны просмотреть результат первого селектора (а также выбрать атрибут без @):

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