属性与类之间是否存在性能(或其他方面)差异
Are there any performance (or otherwise) differences concerning attributes vs. classes?
我很好奇添加类和添加属性的元素,以便动态样式。
为满足特定参数的某些元素应用CSS属性的约定通常是通过对该元素应用一个类来完成的。例如,如果我单击一个按钮,该按钮可以说是处于活动状态-我可以选择然后在单击时对其应用自定义类,如下所示:
$(".button").click(function(){
$(this).addClass("active");
});
CSS就像这样简单:
.button.active {
transform: scale(1.5);
}
我的方法是不同的,我很好奇这两者之间是否有明显的区别。我对元素应用属性而不是类,如下所示:
$(".button").click(function(){
$(this).attr("active", true);
});
与这样的CSS:
.button[active] {
transform: scale(1.5);
}
我想知道是否有任何原因为什么我不应该这样做,即,如果这是一个坏的约定或其他什么,如果在这个方法中有任何性能差异。主要是好奇,但也想知道使用$(".button[active]")
这样的查询是否会比$(".button .active")
的性能差,例如
Mozillas编写高效CSS tl;dr for this:
- 属性选择器是通用选择器
<通用规则/strong>
所有其他规则都属于这一类。
例子em>
[hidden="true"] {…} /* A universal rule */` * {…} /* A universal rule */ tree > [collapsed="true"] {…} /* A universal rule */
- 不要使用通用选择器
避免通用规则
确保规则不会出现在全称范畴!
但是关于css选择器的讨论非常活跃。
最有趣的是,CSSLint考虑出于性能原因不允许非限定属性选择器。
因此,我将坚持使用已经显示出性能的类选择器(当,一如既往,没有被滥用;)).
有人为类似的堆栈溢出问题的答案创建了一个性能测试。
http://jsperf.com/id-vs-class-vs-tag-selectors/2看起来类选择器比属性选择器快得多,尽管显然数量取决于浏览器。
相关文章:
- 如何添加浮动和非浮动,其他
- 与其他库的jQuery.noConflict()
- 播放当前视频时如何停止其他视频?JavaScript
- 剑道UI内联编辑:如何在点击其他按钮时隐藏按钮
- 制作一个不带HTML a标记但在动画播放完毕后指向其他页面的超链接
- 除修剪外的其他功能
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- Array.length似乎不起作用;console.log则显示其他情况
- 如何消除代码中的未定义和其他问题
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- jquery代码在Mozilla中有效,但在其他浏览器上无效
- 为什么不推荐使用“with”?是否有更好或其他方法可以“下降”到对象的命名空间
- Jquery未定义函数正在停止其他操作
- 如何将我的javascript库公开给其他客户端使用
- Javascript阻止其他Javascript代码
- chart.series[id].remove()无法刷新高位图表/高位股票中其他系列的图例属性
- 如何“;过滤器”;或者以其他方式重构该数据
- java脚本在Chrome和其他浏览器中对LocaleTimeString的不同行为
- MouseEvent的哪个方面或其他方面触发了视觉高亮显示
- 属性与类之间是否存在性能(或其他方面)差异