2013-02-07 41 views
0

我有HTML,以下位,我不擁有控制權:查找文本節點,然後包裹在標籤

<div id="sub-nav"> 
Vendita diretta    
<ul class="cms-nav-sidebar">    
<li class="icl-level-1"><a href="/tasting/">Degustazioni</a></li> 
</ul>       
</div> 

我需要換行「子導航」中的文本的第一位div,標記爲<h1>。到目前爲止,我得到這個:

$('#sub-nav').children().wrap("<h1></h1>"); 

然而,這種包裝在h1標籤div中的所有元素。我如何精確定位第一個文本節點並將其包裝在h1中?

感謝 戴夫

+0

jquery並不是特別擅長處理文本節點。可能會更好的工作之外的jQuery。 –

+0

http://stackoverflow.com/q/298750/901048 – Blazemonger

+0

可能的副本謝謝@Blazemonger。以這個線程中的最後一個例子,我使用像這樣:var myText = $('#sub-nav')。contents(':not(ul)')。text(); - 那麼如何使用myText變量在h1中包裝該值? – Dave

回答

1

工作過的Blazemonger的評論的鏈接...

$('#sub-nav').contents(':not(ul)').wrap("<h1></h1>"); 

...應該在你的情況下工作。

+0

雖然,我承認它是非常具體和充滿奇怪的副作用。 – Maple

+0

嗯,它的工作:)在這種情況下,特異性是確定的,因爲子菜單將按照該順序>文本節點> ul – Dave

+0

不是一個理想的解決方案,或者可以在其他情況下使用的解決方案,但在我的情況下,它是精細。 – Dave

0
$('#sub-nav').contents().filter(function(){ 
    return this.nodeType === 3; //text node type 
}).eq(0).wrap("<h1></h1>"); 
相關問題