2012-01-05 47 views
0

我想明白为什么我的基本目录功能.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

你可以改变这一点:

$(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/


Alternativel Y,你可以只追加前添加.parent()

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

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

+0

感谢。我想删除h1/h2/h3标签,所以我将'html(this)'改为'html(this.innerHTML)'。尽管如此,我仍然不明白为什么我的原创不起作用。我很想知道如何在jQuery中进行此操作。 – supertrue 2012-01-05 05:25:32

+0

@supertrue - 无论你使用jQuery。你可以使用你的第一个版本,如果你添加'.parent()'。看到我更新的答案。 – 2012-01-05 14:46:47