附加包装元素不包括包装器

时间:2012-01-05 03:20:11

标签: javascript jquery

我正在尝试理解为什么我的基本目录功能中的.wrap()函数不起作用。该函数过滤来自textarea的标题并将它们放在iframe中,基本部分可以正常工作。但是我想要的输出是这样的:

<ul>
<li class="toc_h2">This is an h2</li>
<li class="toc_h3">This is an h3</li>
<li class="toc_h1">This is an h1</li>
</ul>

我实际得到的是:

<ul>
<h2>This is an h2</h2>
<h3>This is an h3</h3>
<h1>This is an h1</h1>
</ul>

我如何解决这个/我误解了什么?代码在此处http://jsfiddle.net/supertrue/JgWxJ/

headers.each(function(i) {
   $(this).wrap('<li class="toc_' + this.nodeName.toLowerCase() + '"></li>').appendTo(toc);
});

1 个答案:

答案 0 :(得分:1)

你可以改变这个:

 $(this).wrap('<li class="toc_' + this.nodeName.toLowerCase() + '"></li>').appendTo(toc);

到此:

 $('<li class="toc_' + this.nodeName.toLowerCase() + '"></li>').html(this).appendTo(toc);

这是你的小提琴:http://jsfiddle.net/JgWxJ/7/


或者,您可以在追加之前添加.parent()

$(this).wrap('<li class="toc_' + this.nodeName.toLowerCase() + '"></li>').parent().appendTo(toc);

...这里是小提琴:http://jsfiddle.net/JgWxJ/10/