当我在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