jQuery offset()。top无法正常工作

时间:2013-09-16 03:11:54

标签: javascript jquery

一旦它滚出视野,我试图让一个div坚持下去。

var jQ = jQuery.noConflict();

jQ(document).ready(function() {

  var win = jQ(window);
  var navTop = jQ('#navbar').offset().top;

  win.scroll(function() {
    jQ('#navbar').toggleClass('sticky', win.scrollTop() > navTop);
  });

});

问题是,使用此代码时,navTop无法正确计算。如果我在滚动函数中计算navTop它按预期工作,但有一个可怕的闪烁效果,我认为是由于多次重新计算该值。

为什么在加载文档后没有正确计算出值?

1 个答案:

答案 0 :(得分:2)

我用于此问题的修复是触发另一个滚动事件一次以计算navTop变量,现在它可以正常工作。

最终守则:

var jQ = jQuery.noConflict();

jQ(document).ready(function() {

  var win = jQ(window);
  var navTop;

  jQ(document).one("scroll", function() {

    navTop = jQ('#header').offset().top;

  });

  win.scroll(function() {

    jQ('#navbar').toggleClass('sticky', win.scrollTop() > navTop);

  });

});