jquery — получить массив элементов с одинаковыми значениями атрибутов данных

Учитывая, что у меня есть документ, подобный этому:

<div>
    <div data-myAttr = "foo"></div>
    <div data-myAttr = "bar"></div>
</div>
<div>
    <div data-myAttr = "foo"></div>
    <div data-myAttr = "bar"></div>
</div>

Как я могу сгруппировать все элементы, которые содержат data-myAttr с foo и bar?

Изменить: это больше теоретический вопрос. У меня нет проверенного кода, который дал сбой, но я изучаю более элегантный вариант для уже существующего кода.

Кстати, спасибо за -1!?

Изменить: может ли кто-нибудь пометить это как дубликат? Здесь найден применимый ответ: Группировать и подсчитывать элементы HTML по данным атрибут в jQuery


person Chris Stahl    schedule 08.04.2013    source источник
comment
Пожалуйста, опубликуйте код, который вы пробовали, но это не сработало.   -  person James Montagne    schedule 08.04.2013
comment
Чтобы изучить более элегантные варианты уже работающего кода, рассмотрите codereview.stackoverflow.com , и вы все равно захотите опубликуйте свой код.   -  person James Montagne    schedule 08.04.2013


Ответы (2)


Хорошо, это мой первый ответ здесь, так что не судите строго... В моем случае у меня также были дубликаты в моем массиве. И я только начинаю полностью понимать, как все это работает, но вот:

elements = $('div[data-myAttr]').map(function () {
    return $(this).attr('data-myAttr');
});

Затем запустите базовый цикл js по имени, чтобы получить все элементы с правильным атрибутом.

person TJ Sherrill    schedule 18.06.2013

вы можете использовать селектор атрибутов и объединить два селектора атрибутов с помощью comma;

Демо

$('[data-myAttr=foo], [data-myAttr=bar]')

Вы можете перебирать элементы, используя each()

$('[data-myAttr=foo], [data-myAttr=bar]').each(function(){
  alert($(this).text());  
});
person Adil    schedule 08.04.2013
comment
Спасибо за ответ, но возможно ли это сделать без определения значения data-myAttr? - person Chris Stahl; 08.04.2013
comment
Извините, я имел в виду без необходимости определять его как часть селектора. Однако, спасибо! - person Chris Stahl; 08.04.2013
comment
Можете ли вы объяснить, не определяя его как часть селектора? - person Adil; 08.04.2013