2015-09-30 2 views
0

Я пытаюсь сделать клейкий навигатор, который прилипает к вершине только тогда, когда он касается верхней части, но мой код jQuery не работает.jQuery sticky navbar

Код (Jquery):

function findDistance() 
{ 
    var distToTop = $(window).scrollTop(); 
    var navOffset = $('#navbar').offset().top; 
    var distance = (navOffset - distToTop); 
    return distance; 
} 
$(document).ready(function() 
{ 
    var defaultNavDist = 166; 
    var distance = findDistance(); 
    var fixedSet = false; 
    $(window).scroll(function() 
    { 
     if(distance < 1 && fixedSet == false) 
     { 
      fixedSet = true; 
      $('#navbar').css('position', 'fixed'); 
     } 
    }); 
}); 

Ссылка на jsFiddle: http://jsfiddle.net/fj10ruqs/

+2

JSFiddle или что-то подобное поможет отлаживать и предлагать изменения. – robabby

+0

Вот скрипка, которую вы просили: http://jsfiddle.net/fj10ruqs/ – Jojo01

ответ

2

При запуске обработчика окна прокрутки, расстояние не пересчитывается. Вы должны положить distance = findDistance(); внутри обработчика прокрутки. Вы также, вероятно, захотите добавить $('#navbar').css('top', '0');, когда вы установите его на верх, чтобы он был наверху.

$(window).scroll(function() 
    { 
     distance = findDistance(); 
     if(distance < 1 && fixedSet == false) 
     { 
      fixedSet = true; 
      $('#navbar').css('position', 'fixed'); 
      $('#navbar').css('top', '0'); 
     } 
    }); 
+0

Спасибо, не заметили, что: D – Jojo01

+0

Теперь у меня есть еще одна проблема ... Если navbar поражает значение по умолчанию, он должен вернуться к это оригинальная позиция ... http://jsfiddle.net/fj10ruqs/1/ – Jojo01

+0

Хорошо, я понял это. Нет необходимости в дополнительной помощи – Jojo01