javascript - jQuery 的 css() 在应用于滚动事件时滞后

标签 javascript jquery webkit scroll lag

我正在尝试实现一个简单的“固定标题”表。我知道这在理论上只能用 CSS 来完成,但是当涉及到 OSX Lion 及其消失的滚动条时,它效果不佳。所以我用 jQuery 来做。

方法很简单,只有 1.5 行代码:

$('.inbox').scroll(function() {

    $(this).find('.inbox-headers').css('top', $(this).scrollTop());

});

<强> Demo

这在 Firefox 中运行良好且流畅,但在 webkit 浏览器中严重滞后。为什么会发生这种情况以及如何优化此代码?或者也许以不同的方式解决问题。

最佳答案

“scroll”事件非常频繁触发。如果您在某些浏览器中滚动时修改 DOM,那么总是很难跟上。

您可以做以下事情之一:

  1. 就您的情况而言,position:fixed; 可能是一个不错的选择。
  2. 如果没有,则让事件处理程序在未来启动大约 100 毫秒的计时器,并取消进程中任何先前的计时器。这样,DOM 仅在滚动停止或暂停后才会更新。
  3. 如果您想要连续更新,请在执行更新时跟踪时间戳,如果时间少于某个时间(100 毫秒或其他),则在处理程序中不执行任何操作。

关于javascript - jQuery 的 css() 在应用于滚动事件时滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11075525/

相关文章:

javascript - 如何自定义当前页面名称在我的菜单中的显示方式?

jquery - 将数据添加到动态创建的 Chart.js 数据集

c++ - Qt:如何访问 WebKit 页面上的实际小部件?

ios - 在 iPhone 上禁用 YouTube 嵌入的自动全屏

javascript - AJAX 从选择字段中获取 id 作为变量

javascript - window.matchMedia 即使存在媒体查询也不会改变

javascript - 无法将本地化的 moment.js 字符串转换为 unix 时间或任何格式

JavaScript 未在 jsp 中运行

javascript - Coderbyte 挑战 4 : Letter Changes - Won't Upper Case

jquery - 位图没有出现在舞台上(easeljs)