javascript - 我应该将 $(document).height() 和/或 $(window).height() 存储为变量吗?

标签 javascript jquery caching variables

在以下示例中将这些值存储为变量(在 .scroll() 之外)是个好主意吗?

$(window).scroll(function(){
  if ( $(document).height() <= ( $(window).height() + $(window).scrollTop() ) ) {
    // position stuff
  } else {
    // other position stuff
  }
});

我看到的唯一缺点是,在调整窗口大小时,应该再次检查高度。或者我只需要存储对象本身?

非常感谢任何反馈!

最佳答案

至少,在外部存储对 $(document)$(window) 的引用绝对是一个好主意。 scroll 回调,因为滚动事件可能会重复且快速地触发。

var $win = $(window),
    $doc = $(document);

$win.scroll(function(){
  if ( $doc.height() <= ( $win.height() + $win.scrollTop() ) ) {
    // position stuff
  } else {
    // other position stuff
  }
});

按照您的要求进行操作并在回调之外存储文档和窗口高度应该不会有什么坏处 - 前提是您根据需要更新它们。处理所有这些问题的一个好方法是使用优秀的 jQuery throttle/debounce plugin ,它为您提供了一个简单的界面,以确保函数不会运行得太频繁。

关于javascript - 我应该将 $(document).height() 和/或 $(window).height() 存储为变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5656505/

相关文章:

javascript - jQuery ui 微调器百分比计算

javascript - window.open 在 Firefox 中无法正常工作

ASP.NET Core - Web API 中 SPA 路由的缓存问题

javascript - Highcharts 日期不工作

javascript - 如何为不同用户创建单独的抽屉导航 : React Native

javascript - jQuery 将 td onclick 值传递给其他表

javascript - 以编程方式确定要放置在图像上的最佳前景色

javascript - UI5 TreeTable 滚动到以编程方式绑定(bind)到表的模型中的指定项目

Node.js 谷歌地图缓存

caching - Docker 如何知道在构建过程中何时使用缓存,何时不使用?