В итоге получилось это:
!function ($) {
$(function () {
$('.make-toc').each(function (cInd) {
var source = $(this);
var toc = document.createElement('div');
toc.className = 'toc';
var s = '';
source.find('h2, h3').each(function (hInd) {
var h = $(this);
var id = 'header' + cInd + '_' + hInd;
var tag = h.get(0).tagName.toLowerCase();
h.before("<a id='" + id + "'></a>");
s += "<" + tag + "><a href='#" + id + "'>" + h.text() + "</a></" + tag + ">";
});
toc.innerHTML = s;
source.before(toc);
});
});
}(window.jQuery);
но нужно оптимизировать...