2013-08-07 51 views
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将他们作为孩子包含在无序列表中?

+0

什么是当前的代码 –

+0

它选择所有3H人士也不管它们附加到所有的H2S,如果H2有一个兄弟H3或不是问题 – Jared

回答

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

相关问题