我最近阅读了一些关于jQuery性能的文章,我想出了一些奇怪的问题.
>可以/应该缓存$(窗口)吗?
如果我这样做,它会影响调整大小,滚动,宽度,scrollTop …等?
>可以/应该缓存$(文件)吗?
由于我们使用了很多鼠标操作,我应该做var doc = $(document);?
>我可以一直在一大块代码中缓存$(this)吗?
至于var self = $(this);,在什么条件下,self可能与$(this)不同?
解决方法
所有三个问题:是的你可以!
Neccessery:没有
更好的表现:也许吧
你可以尝试做一个基准测试.但缓存的原因不是搜索整个DOM的选择器.查找文档和窗口不是问题,因为它们是2个根变量.缓存$(this)取决于情况.看我的第二个提示.
始终缓存运行查询的父对象:
var header = $('#header'); var menu = header.find('.menu'); // or var menu = $('.menu',header);
$('li.menu-item').click(function () {alert('test click');}) .css('display','block') .css('color','red') fadeTo(2,0.7);
您经常查询的缓存元素:
var header = $('#header'); var divs = header.find('div'); var forms = header.find('form');
选择器适合最慢:
Id > Tag > classes