我可以在jQuery中缓存$(window)和$(document)吗?

use*_*156 7 performance jquery caching

我最近阅读了一些关于jQuery性能的文章,我想出了一些奇怪的问题.

  • 可以/应该缓存$(window)吗?

    如果我这样做,它会影响resize,scroll,width,scrollTop...等?

  • 可以/应该缓存$(document)吗?

    由于我们使用了很多鼠标操作,我应该这样做var doc = $(document);吗?

  • 我可以一直缓存$(this)在一大块代码中吗?

    至于var self = $(this);,在什么条件下self可能会有所不同$(this)

Tim*_*tje 9

所有三个问题:是的你可以!

Neccessery: 没有

更好的表现:也许吧

你可以尝试做一个基准测试.但缓存的原因不是搜索整个DOM的选择器.查找文档和窗口不是问题,因为它们是2个根变量.缓存$(这个)取决于情况.看我的第二个提示.

始终缓存运行查询的父对象:

var header = $('#header');

var menu = header.find('.menu');
// or
var menu = $('.menu', header);
Run Code Online (Sandbox Code Playgroud)

链接jQuery方法比缓存选择器更好:

$('li.menu-item').click(function () {alert('test click');})
                     .css('display', 'block')
                     .css('color', 'red')
                     fadeTo(2, 0.7);
Run Code Online (Sandbox Code Playgroud)

您经常查询的缓存元素:

var header = $('#header');
var divs = header.find('div');
var forms = header.find('form');
Run Code Online (Sandbox Code Playgroud)

免费的额外性能提示:

选择器适合最慢:

Id > Tag > classes
Run Code Online (Sandbox Code Playgroud)

  • 这就是我最近读过的东西.你能关注我问过的3个问题吗? (3认同)