jQuery选择器和变量

时间:2010-09-13 23:09:28

标签: jquery jquery-selectors

写作中的表现是否有明显的优势

var e = $("#el");

e.css(...);
e.attr(...);
....
e.click(...);

而不是

$("#el").css(...);
$("#el").attr(...);
....
$("#el").click(...);

5 个答案:

答案 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)

在演出中,还不足以说明问题。在可读性方面?非常明显的优势