0

尝试选择所有 h2,这工作正常。但是,有时我的 h2 可能有我也想选择的 h3 的兄弟姐妹。

例如,我有:

<h2>
<h3>
<h3>
<h3>
<h2>
<h2>
<h2>
<h3>
<h3>

http://jsfiddle.net/v9upc/1/是我当前的代码,这是我想要实现的示例:

-<h2>
--<h3>
--<h3>
--<h3>
-<h2>
-<h2>
-<h2>
--<h3>
--<h3>

如何选择所有 h2 以及它们是否是 h3 的兄弟以将它们作为子级包含在无序列表中?

4

1 回答 1

1

尝试

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)

演示:小提琴

于 2013-08-07T11:00:45.650 回答