Team:NCTU Formosa/source/head

From 2013.igem.org

(Difference between revisions)
Line 52: Line 52:
};
};
$('#toc').followTo(441);
$('#toc').followTo(441);
 +
});
 +
$(window).load(function(){
// Cache selectors
// Cache selectors
var lastId,
var lastId,
     topMenu = $("#toc"),
     topMenu = $("#toc"),
-
     topMenuHeight = 0,
+
     topMenuHeight = topMenu.outerHeight()+15,
     // All list items
     // All list items
     menuItems = topMenu.find("a"),
     menuItems = topMenu.find("a"),
Line 62: Line 64:
       var item = $($(this).attr("href"));
       var item = $($(this).attr("href"));
       if (item.length) { return item; }
       if (item.length) { return item; }
-
     });
+
     }),
 +
    noScrollAction = false;
// Bind click handler to menu items
// Bind click handler to menu items
// so we can get a fancy scroll animation
// so we can get a fancy scroll animation
menuItems.click(function(e){
menuItems.click(function(e){
-
  var href = $(this).attr("href"),
+
    var href = $(this).attr("href"),
-
      offsetTop = href === "#" ? 0 : $(href).offset().top-topMenuHeight+1;
+
        offsetTop = href === "#" ? 0 : $(href).offset().top-topMenuHeight+1;
-
  $('html, body').stop().animate({  
+
    noScrollAction = true;
-
      scrollTop: offsetTop
+
    $('html, body').stop().animate({  
-
  }, 300);
+
        scrollTop: offsetTop
-
  e.preventDefault();
+
    },{
 +
        duration: 300,
 +
        complete: function() {
 +
            menuItems
 +
                .parent().removeClass("active")
 +
                .end().filter("[href=" + href +"]").parent().addClass("active");
 +
            setTimeout(function(){ noScrollAction = false; }, 10);
 +
        }
 +
    });
 +
    e.preventDefault();
});
});
// Bind to scroll
// Bind to scroll
$(window).scroll(function(){
$(window).scroll(function(){
-
   // Get container scroll position
+
   if(!noScrollAction){
-
  var fromTop = $(this).scrollTop()+topMenuHeight;
+
      // Get container scroll position
-
 
+
      var fromTop = $(this).scrollTop()+topMenuHeight;
-
  // Get id of current scroll item
+
     
-
  var cur = scrollItems.map(function(){
+
      // Get id of current scroll item
-
    if ($(this).offset().top < fromTop)
+
      var cur = scrollItems.map(function(){
-
      return this;
+
        if ($(this).offset().top < fromTop)
-
  });
+
          return this;
-
  // Get the id of the current element
+
      });
-
  cur = cur[cur.length-1];
+
      // Get the id of the current element
-
  var id = cur && cur.length ? cur[0].id : "";
+
      cur = cur[cur.length-1];
-
 
+
      var id = cur && cur.length ? cur[0].id : "";
-
  if (lastId !== id) {
+
     
-
      lastId = id;
+
      if (lastId !== id) {
-
      // Set/remove active class
+
          lastId = id;
-
      menuItems
+
          // Set/remove active class
-
        .parent().removeClass("selected")
+
          menuItems
-
        .end().filter("[href=#"+id+"]").parent().addClass("selected");
+
            .parent().removeClass("selected")
-
   }                  
+
            .end().filter("[href=#"+id+"]").parent().addClass("selected");
 +
      }
 +
   }  
});
});
});
});
</script>
</script>

Revision as of 19:23, 29 August 2013