/** * Super TOC! v1.0 - Table Of Content jQuery plugin * http://www.kyrielles.net/ * * Copyright (c) 2010-2011 Alan Frog * Licensed under the GNU General Public License * See or * * Requires: jQuery */ (function($){ $.fn.superToc = function( options ){ // Default settings var settings = { headings:"h1,h2,h3" }; var clean = function(s){ var r=s.toLowerCase(); r = r.replace(/\s/g,""); r = r.replace(/[àáâãäå]/g,"a"); r = r.replace(/æ/g,"ae"); r = r.replace(/ç/g,"c"); r = r.replace(/[èéêë]/g,"e"); r = r.replace(/[ìíîï]/g,"i"); r = r.replace(/ñ/g,"n"); r = r.replace(/[òóôõö]/g,"o"); r = r.replace(/œ/g,"oe"); r = r.replace(/[ùúûü]/g,"u"); r = r.replace(/[ýÿ]/g,"y"); r = r.replace(/\W/g,""); r = r.replace(/\W/g,""); return r; }; // Applying plugin return this.each( function() { // Client settings if ( options ) { $.extend( settings, options ); } //var self = this; var domObj = $( this ); var toc = ""; $( settings.headings, domObj ).each(function(){ var curtag = $( this ); var tagId = curtag.attr( "id" ); var tagText = curtag.text(); var tagType = curtag.get(0).tagName.toLowerCase(); if( !tagId ){ tagId = "TOC"+ clean(tagText); curtag.attr( "id", tagId ); } toc += '
  • '+tagText+'
  • '; }); domObj.prepend('
      '+toc+'
    '); }); }; })( jQuery );