如何选择具有特定元素的所有兄弟元素的所有特定元素

时间:2013-08-07 10:42:48

标签: jquery

尝试选择所有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是否将其作为无序列表中的子项包含在内?

1 个答案:

答案 0 :(得分: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)

演示:Fiddle