2012-01-05 80 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