我正在根据标题结构以有序列表的样式制作目录,例如:
<h1>lorem</h1>
<h2>ipsum</h2>
<h2>dolor</h2>
<h3>sit</h3>
<h2>amet</h2>
变成:
- 洛雷姆
- ipsum
- 忧郁
- 坐
- 亚美特
这就是我目前的做法:
$('h1, h2, h3, h4, h5, h6').each ()->
# get depth from tag name
depth = +@nodeName[1]
$el = $("<li>").text($(this).text())
do get_recursive_depth = ()->
if depth is current_depth
$list.append $el
else if depth > current_depth
$list.append( $("<ol>") ) unless $list.children().last().is('ol')
$list = $list.children().last()
current_depth += 1
get_recursive_depth()
else if depth < current_depth
$list = $list.parent()
current_depth -=1
get_recursive_depth()
哪个有效,但似乎缺乏优雅。有没有更聪明/更快/更健壮的方法来做到这一点?