Когда я запускаю эксперименты в jsFiddle в Chrome, document.querySelectorAll()
найдет совпадение только для данного элемента, если атрибут FIRST с заданным именем атрибута соответствует вашему селектору. Или сказал, иначе, если у вас несколько определений одного и того же атрибута, document.querySelectorAll()
не находит совпадений ни в одном из них, кроме первого.
Я не тестировал другие браузеры, чтобы посмотреть, как они себя ведут в этом отношении, но этого достаточно, чтобы сказать вам, что у вас есть проблема с использованием нескольких определений того же имени атрибута, что и вы.
Кроме того, в документе Section 8.1.2.3 about Attributes in the HTML5 spec here четко указано, что вы не должны иметь дублирующий атрибут в одном и том же теге.
Там никогда не должно быть два или более атрибутов на одной и той же начальной метки, чьи имена являются ASCII регистронезависимым подходят друг к другу.
Я не знаю, что проблема на самом деле вы пытаетесь решить здесь, но обычная практика заключается в использовании нескольких значений на том же определении атрибута путем разделения нескольких значений с разделителем, как точка с запятой а затем вы можете использовать оператор *=
в вашем селекторе найти атрибуты, которые содержат подстроку, как это:
<div class="misc" data-custom-test="test1;test2"></div>
var elements = document.querySelectorAll('[data-custom-test*="' + "test2" + '"]');
console.log(elements.length);
http://stackoverflow.com/help/mcve – hendry
просто увидеть финишную HTML: ваш DIV имеет только первый атрибут – Grundy
@hendry: Не знаете, почему вы ссылаетесь на эту статью помощи. Вы не видите MCVE в вопросе? – BoltClock