TypeError jQuery offset().top 未定义

Posted

技术标签:

【中文标题】TypeError jQuery offset().top 未定义【英文标题】:TypeError jQuery offset().top is undefined 【发布时间】:2014-02-23 23:59:24 【问题描述】:

Firefox 调试器显示 jQuery 函数的 TypeError,该函数旨在在用户滚动并同时更新类时将导航栏粘贴到页面顶部。

函数如下。

$(window).scroll(function() 
    if ($(".navbar").offset().top>30) 
        $(".navbar-fixed-top").addClass("sticky");
    
    else 
        $(".navbar-fixed-top").removeClass("sticky");
    
);

产生的错误是这样的。

时间戳:31/01/2014 10:01:04

错误:TypeError:$(...).offset(...) 未定义

我在 SO 上查看了类似的示例,但无法将结果转化为修复。任何帮助将不胜感激。

【问题讨论】:

是您要显示偏移量的元素吗? 相关的 html 标记在哪里? 【参考方案1】:

这是因为你的 $(".navbar") 找不到。在获取偏移量之前检查元素是否存在。

if ($(".navbar").length) ...

【讨论】:

或者如果对象不可见也返回 undefined 尝试使用 ID。【参考方案2】:

这样对我有用

$('.custom-scrollbar').animate(
    scrollTop: $('a.sidebar-link.sidebar-title.active').offset.top - 200
, 1000);

不带 () 的偏移量

【讨论】:

以上是关于TypeError jQuery offset().top 未定义的主要内容,如果未能解决你的问题,请参考以下文章

TypeError: can't compare offset-naive and offset-aware datetimes bugfix

jquery 中的 offset()

jQuery中offset()方法,获取的top=0,left=0。

jquery offset()和position()的区别

jQuery---offset方法和position方法

jquery offset获取div的位置top和left数值