写作中的表现是否有明显的优势
var e = $("#el");
e.css(...);
e.attr(...);
....
e.click(...);
而不是
$("#el").css(...);
$("#el").attr(...);
....
$("#el").click(...);
答案 0 :(得分:10)
是的,在第一个版本中,您每次都没有再次找到该元素,这总是一些成本。还有第三种选择,链接:
$("#el").css(...)
.attr(...)
.click(...);
这是您将看到的更常见的方法,但每个开发人员的风格各不相同......图书馆的设计考虑到了链接。在ID选择器的特定情况下,document.getElementById()
的费用非常最小,而其他任何选择器的加起来都要快得多。
答案 1 :(得分:1)
是。此外,您可以获得更好的可读性(特别是如果您使用它们的名称命名):
var $commentForm = $('#comment-form');
答案 2 :(得分:1)
如果在这种情况下明显的优势对用户来说是显而易见的......那么可能不是,因为现在没有人抱怨 。另一方面,如果你的意思明显优于代码的生命周期(以及那些必须维护代码的人的生命周期),那么第一个代码就具有相当大的优势。首先,运行速度更快,因为等效的非jQuery代码是:
(在Windows XP上使用Chrome 7.0.517.5,速度提高25%。请参阅jsperf.com上的this test I created)
var e = document.getElementById("el");
// do stuff with e
与
document.getElementById("el").//manage the css
document.getElementById("el").//add, alter, or access attributes
document.getElementById("el").onclick // do something with this event.
其次,正如格莱布姆指出的那样,它更具可读性。如果您使用描述性变量名称 - 这使得以后更快地理解和编辑。
答案 3 :(得分:0)
是的,第一个会有更好的性能,因为jQuery只需要解析选择器并创建一次节点集。当然,差异可能并不明显。
答案 4 :(得分:-2)
在演出中,还不足以说明问题。在可读性方面?非常明显的优势