TypeError:无法读取未定义jQuery的属性“ top”

时间:2019-06-27 10:58:26

标签: javascript jquery html

with app.app_context(): # js/css files asset_env.append_path(app.static_folder) # os.path.split to get package directory loutilitiespath = os.path.split(loutilities.__file__)[0] # kludge: seems like assets debug doesn't like url and no debug insists on it if app.config['ASSETS_DEBUG']: url = None else: url = '/loutilities' asset_env.append_path(os.path.join(loutilitiespath, 'tables-assets', 'static'), url) 格之后,我正在使用此代码使导航保持粘性。它对我来说很好,但问题是我的控制台显示错误

  

未捕获的TypeError:无法读取未定义的属性“ top”

请为此提供一些解决方案。谢谢

#header1

1 个答案:

答案 0 :(得分:3)

问题是因为在DOM准备就绪之前,您尝试使用offset()元素时#header1没有返回任何内容。要解决此问题,请将代码移到document.ready处理程序内。

还请注意,不建议使用bind(),而应使用on(),并且可以通过将addClass()与布尔值一起使用来简化removeClass() / toggleClass()逻辑。

$(document).ready(function () {
  $(window).on('scroll', function () {
    var navHeight = $(".header1").height();     
    $('.afterLgnRow').toggleClass('goToTop', $(window).scrollTop() > navHeight);
  });

  $('.afterLgnRow').affix({
    offset: { 
      top: $('#header1').offset().top 
    }
  });
});

我还注意到您同时访问#header1.header1-确保这些选择器正确。