nestedToc
nestedToc is a light jQuery plugin that will automatically generate a hierarchical table of contents for your page, based on the heading tags found.
Try it!
Include the file in your page.
If you have a div#my-content
and you want to extract a table of contents out of its headings, and put the table in div#my-toc
…
$('#my-toc').nestedToc({container: '#my-content'});
You can pass several options:
- container: element to scan the table of contents from. By default:
body
Simplest usage:
$('#my-toc').nestedToc();
How does it look like?
Given this document:
<h2>Title</h2> Paragraph 1 <h3>Deeper title</h3> Paragraph 2 <h2>Second title</h2> Paragraph 3
You'll get:
<ol> <li> <a href="#Title">Title</a> <ol> <li> <a href="#Deeper-title">Deeper-title</a> </li> </ol> </li> <li> <a href="#Second-title">Second-title</a> </li> </ol>
The id
attribute of the heading tags will be altered in order the links to work.
Styling
Complement the table of contents with the CSS of your choice. Suggestion:
ol counter-reset: section list-style-type: none ol margin-left: 30px li display: block &:before counter-increment: section content: counters(section,".") ". "
…to get a nice numbered ordering:
1. Title 1.1. Deeper title 2. Second title
Read more about ordered list counters.
Problems
It is known not to work if there's a gap between levels.
<h2>Title</h2> <h4>Sub title</h4>
The h4
must have been an h3
.