selectors-api用于数据属性

时间:2010-04-19 04:56:57

标签: html css html5 css-selectors selectors-api

在HTML5中,CSS选择器似乎可以很好地运行data- *属性。例如:

<style>
div[data-foo='bar'] {
  background:#eee;
}
</style>
<div data-foo='bar'>colored</div>
<div>not colored</div>

将正确设计第一个样式。但是,尝试使用selectors-api选择此类元素失败。例子:

var foos = document.querySelectorAll("div[data-foo]='bar'");

var foos = document.querySelectorAll("div data-foo='bar'");

在Chrome和Safari中,这会产生一个神秘的错误:

SYNTAX_ERR:DOM异常12

有关如何使用selectors-api根据data- *属性正确选择元素的想法吗?

2 个答案:

答案 0 :(得分:8)

属性选择器的语法为[att=val],因此您需要div[data-foo='bar']

答案 1 :(得分:2)

安妮是对的。 (幸运的是,因为他是相关规范的编辑之一。)

<!DOCTYPE html>
<style>
div[data-foo='bar'] {
  background:blue;
}
</style>
<div data-foo='bar'>colored</div>
<div>not colored</div>
<script>
var foos = document.querySelectorAll("div[data-foo='bar']");
alert(foos[0])
</script>

适用于我的是Firefox,Opera和Chrome。请注意,正如您在CSS中使用的那样div[data-foo='bar'],而不是div[data-foo]='bar',就像您在脚本中使用的那样。