application-scrollspy.js 898 bytes
// scroll spy logic
// ================
$(function () {
  var activeTarget,
     position = {},
     $window = $(window),
     nav = $('body > .topbar li a'),
     targets = nav.map(function () {
       return $(this).attr('href');
     }),
     offsets = $.map(targets, function (id) {
       return $(id).offset().top;
     });
  function setButton(id) {
   nav.parent("li").removeClass('active');
   $(nav[$.inArray(id, targets)]).parent("li").addClass('active');
  function processScroll(e) {
   var scrollTop = $window.scrollTop() + 10, i;
   for (i = offsets.length; i--;) {
     if (activeTarget != targets[i] && scrollTop >= offsets[i] && (!offsets[i + 1] || scrollTop <= offsets[i + 1])) {
       activeTarget = targets[i];
       setButton(activeTarget);
  nav.click(function () {
   processScroll();
  });
  processScroll();
  $window.scroll(processScroll);