【发布时间】:2012-09-11 21:21:56
【问题描述】:
几个月前this article 指出,实际上可以从网站开发中完全避免课程。
我的问题是,与类选择器相比,数据选择器的效率如何?
一个简单的例子是比较使用data-component='something' 和class='class1 class2 something anotherClass' 查询元素。
[data-<attr>='<value>'] 选择器将检查整个值与应拆分的类字符串。考虑到这一点,数据属性应该更快。
那么,为了细化这个问题,对于 CSS,我们是使用类选择器还是数据选择器更好?而且从 javascript 的角度来看,jQuery("[data-component='something']") 会比jQuery(".something") 更高效吗?
【问题讨论】:
-
我不知道什么样的网络编程与那篇文章的诡辩有关,但我很确定这与我所做的无关。另外,如果您仔细阅读那篇文章,我怀疑它的作者对
data-属性的关注与对类的关注一样多;毕竟它们都代表着同一种“罪行”。 -
至于你的问题,一些jsperf 测试可能有助于回答这个问题。我怀疑任何带有
querySelectorAll()等的现代浏览器都不会遇到任何困难。 -
我越是考虑数据属性和样式而不是添加类,我就越喜欢它们。例如,隐藏块元素(如搜索框)的事实可以由 data-state='hidden' 指示。对于我这个开发人员来说,这似乎比“component widget-header touchable hidden rounded-top”更容易阅读。
-
很遗憾,BLSully 似乎有点正确。这太令人震惊了......如果几个小时后没有更多答案,我将关闭这个问题。
-
@VladNicula 好吧,我猜这是口味问题;我不明白为什么
data-state=hidden与“隐藏”类真的有很大不同。无论如何,您的方法与该文章的主题完全相反,与类的做法完全相同。这篇文章的重点是,在标准 HTML 元素上发明的装饰器本质上是不可理解的,并且不如通过显式可读内容增强的表示描述的结构化方法。
标签: javascript css performance html css-selectors