[英]jquery performance variable
几个问题,我想知道何时应该使用变量,如果选择器将调用多次,那么我应该对那个选择器进行变量设置?
var $body = $('body');
如果我有100个jquery函数,则每个函数都需要$('body')
选择器,本地100次或全局一次变量会更快?
如果像下面的功能
$('.link').on('click', function() { var $this =$(this); $this.addClass('a'); });
函数完成,仅调用$ this一次,我需要$this
吗? 或者只是使用$(this)
? 哪一个更快?
可变非选择器
$('one').addClass('a').removeClass('b').html('abcd'); $('two').addClass('a').removeClass('b').html('abcd');
如果我创建一个变量var job = addClass('a').removeClass('b').html('abcd');
`$('one').job;
$('two').job;`
会更快吗? 还是没用?
调整功能变量的大小,以使全高div,哪个会更快?
$('#full-height').css({'height' : ($(window).height() + 'px')}); //without variable
var vH = $(window).height(); $('#full-height').css({'height' : vH + 'px'}); //with variable
var vH = $(window).height(); $('#full-height').height(vH + 'px'); //with variable and use height() method
以上所有函数都在$(window).on('resize', function() {}
,因此每次重新调整大小函数都将运行时,变量代码会更快吗?
当我需要改变非选择器?
非常感谢
如果您多次使用元素,则将其保存在变量(元素的指针)中肯定会提高性能,因为就像您说的是一个查询一样 ,jQuery会获取所有DOM来查找所需的元素,因此保存查询变量的结果会更快,这是个好习惯。
因此,使用$this
代替$(this)
也会提高性能。
*对于问题3
您无法执行job = addClass...
因为addClass 不是全局函数! 这是一个jQuery对象方法! 因此您只能将其与jQuery对象/元素$jqObject.addClass...
*问题4
就像我说过的,如果您在同一个函数中多次使用方法的结果,则应将其放在变量中,但在您的示例中,您将使用$(window).height();
只有一次,因此将其放入变量中是没有用的,但这是编写干净代码的好习惯。 并且不会影响性能。
简而言之:如果在同一个上下文中多次使用方法的结果,则将其保存在变量中将提高性能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.