2014-01-31 6 views
10

Der Firefox-Debugger zeigt einen TypeError für eine jQuery-Funktion an, die eine Navigationsleiste an den oberen Rand der Seite kleben soll, wenn ein Benutzer scrollt und die Klasse gleichzeitig aktualisiert.TypeError jQuery offset(). Top ist undefined

Die Funktion ist unten.

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

Der resultierende Fehler ist dies.

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

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

Ich habe auf SO für ein ähnliches Beispiel nachgeschaut, kann aber die Ergebnisse nicht in eine Lösung übersetzen. Jede Hilfe würde sehr geschätzt werden.

+0

Ist es das Element, das der Offset angezeigt wird? – MarcoL

+1

Wo ist das relevante HTML Markup? – Sparky

Antwort

21

Es liegt daran, dass Ihr $ (". Navbar") nicht gefunden werden kann. Überprüfen Sie, ob das Element vor dem Versatz existiert.

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

Oder wenn das Objekt nicht sichtbar ist, gibt es auch undefined –

+0

Versuchen Sie stattdessen, eine ID zu verwenden. – Josh

Verwandte Themen