JQuery缓存选择器 - 我误解了吗?

时间:2012-06-25 22:10:01

标签: javascript jquery optimization

我正在研究一些JQuery代码,我对缓存选择器有疑问。我有一个在滚动时调用的某个函数(因此需要很快)。我尝试在初始化期间缓存函数中使用的选择器,如下所示:

var myElement = $('#myElement');

function onScroll()
{
    myElement.whatever();
}

当我在firebug中分析代码时,我发现JQuery选择器函数的调用频率是onScroll函数的5倍(我在函数中使用了5个不同的选择器),并且对大多数函数负责执行时间。

1)那么以这种方式缓存的好处到底是什么?我不是讽刺的。)

2)我理解选择器需要在DOM更改的情况下重新运行,但有没有办法缓存单个选定对象,这样每次都不需要运行该函数,同时保留在JQuery中?

1 个答案:

答案 0 :(得分:2)

  1. 当您使用变量myElement时,您正在使用一个jQuery对象,该对象包含对创建对象时找到的元素的引用。使用jQuery对象时,不会重新运行选择器来更新元素集。

  2. 是的,你完全按照你的表现行事。