當我在Chrome中的jsFiddle中運行實驗時,如果具有給定屬性名稱的FIRST屬性與您的選擇器匹配,那麼document.querySelectorAll()
只會在給定元素上找到匹配項。或者說,換一種說法,如果您有多個相同屬性的定義,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