diff --git a/dist/toc.js b/dist/toc.js
index f77a829..4dddbd8 100644
--- a/dist/toc.js
+++ b/dist/toc.js
@@ -170,7 +170,7 @@ jQuery.fn.toc.defaults = {
if (verboseIdCache[candidateId]) {
var j = 2;
- while(verboseIdCache[candidateId + j]) {
+ while(verboseIdCache[candidateId + '-' + j]) {
j++;
}
candidateId = candidateId + '-' + j;
diff --git a/docs/index.md b/docs/index.md
index 61b6d2c..e17b7ad 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -30,6 +30,8 @@ Defaults shown below
'listType': '
', //use unordered list. If you need ordered one instead pass: '
'
'smoothScrolling': true, //enable or disable smooth scrolling on click
'prefix': 'toc', //prefix for anchor tags and class names
+ 'backToTop': false, //add back to top link on heading
+ 'backToTopLabel': 'Back to top', //label used for back to top link
'onHighlight': function(el) {}, //called when a new section is highlighted
'highlightOnScroll': true, //add class to heading that is currently in focus
'highlightOffset': 100, //offset to trigger the next headline
diff --git a/lib/toc.js b/lib/toc.js
index 378259f..1cb70bc 100644
--- a/lib/toc.js
+++ b/lib/toc.js
@@ -58,12 +58,28 @@ $.fn.toc = function(options) {
headingOffsets.push($h.offset().top - opts.highlightOffset);
var anchorName = opts.anchorName(i, heading, opts.prefix);
+ var anchorNameToTop = anchorName + '-to-top';
//add anchor
if(heading.id !== anchorName) {
var anchor = $('').attr('id', anchorName).insertBefore($h);
}
+ // Add back to top link.
+ if (opts.backToTop) {
+ var anchorToTop = $('')
+ .attr('href', '#' + anchorNameToTop)
+ .text(opts.backToTopLabel)
+ .insertAfter($h)
+ .bind('click', function(e) {
+ $(window).unbind('scroll', highlightOnScroll);
+ scrollTo(e, function() {
+ $(window).bind('scroll', highlightOnScroll);
+ });
+ el.trigger('selected', $(this).attr('href'));
+ });
+ }
+
//build TOC item
var a = $('')
.text(opts.headerText(i, heading, $h))
@@ -76,6 +92,10 @@ $.fn.toc = function(options) {
el.trigger('selected', $(this).attr('href'));
});
+ if (opts.backToTop) {
+ a.attr('id', anchorNameToTop);
+ }
+
var li = $('')
.addClass(opts.itemClass(i, heading, $h, opts.prefix))
.append(a);
@@ -100,6 +120,8 @@ jQuery.fn.toc.defaults = {
},
scrollToOffset: 0,
prefix: 'toc',
+ backToTop: false,
+ backToTopLabel: 'Back to top',
activeClass: 'toc-active',
onHighlight: function() {},
highlightOnScroll: true,