2012-01-05 4 views
0

基本的な目次機能の.wrap()関数が機能しない理由を理解しようとしています。この関数は、テキストエリアからヘッダーをフィルタリングし、iframeに配置し、基本部分が機能します。 ラップされた要素を追加するときにラッパーが含まれない

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

がどのように私はこの問題を解決することができ

/私が何を誤解しています:

<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> 

は、私が実際に取得していますが、この次のとおりです。しかし、私の所望の出力に対し、このですか?コードはここにあると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

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

を...と、ここにフィドルです:yは、あなただけの追加の前に.parent()を追加することができhttp://jsfiddle.net/JgWxJ/10/

+0

おかげで。私はh1/h2/h3タグを削除したかったので、 'html(this)'を 'html(this.innerHTML) 'に変更しました。私はまだ私の原作がうまくいかない理由はまだ分かりません。私はjQueryにとどまっている間にこれを行う方法を知りたいです。 – supertrue

+0

@supertrue - いずれにしても、あなたはjQueryにとどまっています。 '.parent()'を追加すると、最初のバージョンを使うことができました。私の更新された答えを見てください。 –

関連する問題