TypeError jQuery offset().top is undefined

K7Buoy picture K7Buoy · Jan 31, 2014 · Viewed 64k times · Source

The Firefox debugger is showing a TypeError for a jQuery function aimed at sticking a navbar to the to the top of the page when a user scrolls and updating the class at the same time.

The function is below.

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

The resulting error is this.

Timestamp: 31/01/2014 10:01:04

Error: TypeError: $(...).offset(...) is undefined

I have looked about on SO for a similar example but can not translate the outcomes into a fix. Any help would be greatly appreciated.

Answer

user3709748 picture user3709748 · Oct 17, 2014

It 's because your $(".navbar") cannot be found. Check if the element exist before getting offset.

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