/nestedToc

nestedToc is a light jQuery plugin that will automatically generate a table of contents for your page.

Primary LanguageJavaScript

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.