尝试选择所有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 :(得分: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