jQuery выбрать элементы, когда атрибут содержится в списке атрибутов? - PullRequest
0 голосов
/ 22 июля 2011

Лучше объясните на примере (я очень новичок в jQuery, заранее извините):

// Selector for checkboxes not checked
var checkboxes = "input:checkbox:not(:checked)";

// Selector for labels relative to checkboxes not checked
var labels = "label[for=" + $(checkboxes).attr("id") + "]";

$(checkboxes + ", " + labels]).FadeTo("slow", 0.45);

Это работает для флажков, но не для ярлыков (как ни странно, выбирается только один ярлык).

Вопрос: как выбрать «прикрепленные» ярлыки? И как на самом деле работает .attr("name"), когда выбрано более одного элемента (возвращает массив, составной список или ... что?).

Ответы [ 3 ]

1 голос
/ 22 июля 2011

Попробуйте это:

$('input:checkbox:not(:checked)').each(function(){
    $('label[for=' + $(this).attr('id') + ']').add(this).fadeTo('slow',0.45);
});
0 голосов
/ 22 июля 2011
// Selector for checkboxes not checked
var checkboxes = $('input:checkbox:not(:checked)'), 
    selector = [];

checkboxes.each(function(){
  selector.push('[for="' + $(this).attr('id') + '"]');
});

// Selector for labels relative to checkboxes not checked
var labels = $('label:' + selector.join());

Полагаю, этого должно быть достаточно.

0 голосов
/ 22 июля 2011

(как ни странно, выбирается только одна метка)

И, как на самом деле работает .attr("name"), когда выбрано более одного элемента (возвращает массив, составной список или ... что?).

Вызов .attr() для набора элементов возвращает только значение атрибута для первого элемента. Так что в вашем случае метка для первого флажка выбрана.

Вы всегда можете динамически создавать набор селекторных строк с помощью цикла, но это не очень эффективно. Если ваши метки и чекбоксы имеют предсказуемую структуру HTML, вы можете использовать это в своих интересах вместо этого с помощью методов обхода jQuery .

...