我还在学习jQuery,但我找不到可靠的答案。我知道每次使用jQuery选择器$(...)
都会产生性能成本,但是$(this)
会有很大的成本,你应该在使用它之前缓存它吗?
var $this = $(this);
答案 0 :(得分:11)
如果你经常使用它,是的,它有意义,或链,例如:
$(this).fadeIn().fadeOut().somethingElse();
如果贵吗?不是没有真正的宏观方案......但如果你在一个循环中,成本倍增,所以最好缓存它。如果你不止一次地使用它有意义,那么多少意义取决于我认为对于那段代码有多重要。
答案 1 :(得分:0)
好问题,杰森。我想jQuery选择器函数可以非常有效地注意到this
关键字。也就是说,如果可以避免重复调用相同的选择器,那么它是否有意义。这是方法链有用的地方:
$(this).hide().show().hide();
如果你要在同一个函数的不同点上使用相同的选择器,我可能会创建一个变量来存储jQuery选择器函数的返回值。没有这个,我不会担心它,因为它真的是非常非常少量的处理...特别是因为我很确定jQuery库之前检查this关键字(和字符串类型)它运行任何正则表达式。