jquery:将div分配给对象变量以进行缓存

jquery:将div分配给对象变量以进行缓存,jquery,Jquery,我有以下在函数内部工作的代码: $('#MyPanel').stop().animate({ top: PanelTop }, 300); 但是,我希望将div分配给一个对象,这样jquery就不必每次都重新计算引用 我有一个全局变量,然后我想在函数中使用它,如下所示: var ThePanel = $('#MyPanel'); ThePanel.stop().animate({ top: PanelTop }, 300); 什么也没发生。知道为什么吗 谢谢。您“缓存”对象的代码是正确的。

我有以下在函数内部工作的代码:

$('#MyPanel').stop().animate({ top: PanelTop }, 300);
但是,我希望将div分配给一个对象,这样jquery就不必每次都重新计算引用

我有一个全局变量,然后我想在函数中使用它,如下所示:

var ThePanel = $('#MyPanel');

ThePanel.stop().animate({ top: PanelTop }, 300);
什么也没发生。知道为什么吗

谢谢。

您“缓存”对象的代码是正确的。我怀疑发生了什么事。。。你确定第一段代码有效,但第二段代码无效吗


我会使用FireBug或内置的web调试工具(如Chrome)来停止这一行,并查看面板是否为空

使用
$(面板)。停止…
你就离开了。据我所知,这仍将为您提供所需的性能增益。解决方案是将全局变量声明为null,然后在document.ready函数中而不是在全局声明部分将div分配给对象变量

<script>

  var ThePanel = null;

  $(document).ready(function () {

    ThePanel = $('#MyPanel');

  });

</script>

var ThePanel=null;
$(文档).ready(函数(){
面板=$(“#我的面板”);
});

我明白了:在全局声明中,您将变量设置为null,并在document.ready函数中放置分配变量的行@frenchie:为了未来读者的利益,你应该将你的解决方案(以及相关代码)作为新答案发布,然后接受你自己的答案。每一个小小的计算机周期都会有所帮助,但你不必太担心ID选择器的成本;它非常高效,因为它使用document.getElementById()@rkw缓存选择器(并在适当的情况下使用
this
)可以显著提高性能。看:@近战啊,酷站点。我更新了测试以包括按id的选择器。按id的选择器和按类的选择器之间存在差异@rkw durf,说得好。我贴的时候网站已经关闭了,所以我错过了,哈哈