尝试
var $h2s = $('h2'), $div = $h2s.parent();
var toTop = '<span class="top">Back to top</span>';
var $ct = $('<div />', {
class: 'indexholder'
}).append('<h2>On this page</h2>');
var $ul = $('<ul />', {
class: 'index'
}).appendTo($ct);
$h2s.each(function(idx, el){
var $li = $('<li />', {
id: 'index' + idx,
text: $(this).text()
}).appendTo($ul);
var $h3s = $(this).nextUntil('h2', 'h3');
if($h3s.length){
var $l1ul = $('<ul />', {
}).appendTo($li);
$h3s.each(function(idx2, el2){
var $li = $('<li />', {
text: $(this).text()
}).appendTo($l1ul);
})
}
})
$div.replaceWith($ct)
演示:小提琴