1

当我滚动页面/窗口时,我想为指定元素添加一些类,所以我为此使用了偏移量,但它不是在工作 - 有什么问题?非常感谢您的帮助。这是我的代码:

$(window).scroll(function() {
    var top_offset = $('body').offset().top;
    if ((top_offset >= 40)) {
        $('nav').addClass('docked_nav');
    }
});
4

3 回答 3

3

您已经在变量中获取了offest 值top_offset,它现在包含数值并且不是对象。所以要么使用

if (top_offset>= 40) {
        $('nav').addClass('docked_nav');
    }

或者不使用任何变量

if ($('body').offset().top >= 40) {
        $('nav').addClass('docked_nav');
    }

Arun Killu 的回答也是需要考虑的

于 2012-10-24T10:06:15.640 回答
1
$('.nav').addClass('docked_nav'); if nav is a class or `#nav` if nav is id
于 2012-10-24T10:05:08.450 回答
0

当 window 是实际的滚动元素时,我将假设您从顶部获取 body 的偏移量。在这种情况下,您可能希望通过调用如下函数来获取窗口的滚动位置:

function getWindowScrollPos() {
    return (window.pageYOffset !== undefined) ? window.pageYOffset :
    (document.documentElement ||
     document.body.parentNode ||
     document.body).scrollTop;
}

如果您试图使一个或多个元素具有粘性(粘在顶部),您可以轻松地使用我创建的这个库来处理这个问题,而不必担心引擎盖下发生了什么:

https://github.com/vhiremath4/Balloon

编辑:

以防万一不清楚,您将要调用该 getWindowScrollPos 函数并将其分配给 top_offset 而不是使用 jQuery 的 offset 方法。

于 2012-10-24T10:10:18.090 回答