2011-08-05 35 views
1

我有其中的格式我不能變化,看起來像這樣一個HTML頁面:jQuery:如何從標籤換行到標籤(包括文本節點!)。

<A HREF="Lorem ipsum.htm"><B>Lorem ipsum dolor sit amet</B></A><BR>consectetuer 
adipiscing elit. Aenean commodo ligula eget dolor.<BR><BR> 

<FONT FACE="Courier New" COLOR="#0000ff">&#169;</FONT> <A HREF="Aeneanmassa.htm"> 
<B>Aenean massa</B></A><BR> Cum sociis natoque penatibus et magnis dis parturient 
montes, nascetur ridiculus mus.<BR><BR> 

<A HREF="Inenimjusto.htm"><B>In enim justo</B></A> rhoncus ut, imperdiet a, 
venenatis vitae, justo.<BR> 
<A HREF="Aliquam1.htm"><B><I>Aliquam 1</I></B></A> 
<A HREF="Aliquam2.htm"><B><I>Aliquam 2</I></B></A> 
<A HREF="Aliquam3.htm"><B><I>Aliquam 3</I></B></A> 
<BR><BR> 

問題:使用上面的例子,我需要包裝每三個「塊」 (包括文字)節點在一個div中。您會注意到,每個「塊」都以<font><a href>元素開始,並以<br><br>結尾。

我一直在撞牆,試圖讓這個工作。不幸的是,大多數jQuery函數似乎「推」出文本節點。此外,「nextUntil」函數將第一個選擇器從wrap操作中排除,否則它看起來就是完美的解決方案。一個純JavaScript解決方案也可以工作,但這個問題看起來像是jQuery要解決的問題?

我成立了一個的jsfiddle爲願意幫助任何勇敢的靈魂... http://jsfiddle.net/aHZNv/1/

+0

你有周圍的整個事情的一些元素?也許''?如果是這樣,你可以嘗試獲取包裝器的'innerHTML'並將其拆分'

'。這對你有用嗎? – bfavaretto

+0

是的!顯然,我的做法從一開始就完全錯誤了。您的方法似乎與Jacek_FH在下面使用的方法相同。謝謝! – jqcAngel

回答

2
var container = $('body'); // or what you need 
var html = container.html().split('<br><br>'); 
container.html(""); 
for(var i in html) 
{ 
    if($.trim(html[i])) 
     container.append("<div>"+html[i]+"</div>"); 
} 

,如:http://jsfiddle.net/Jacek_FH/e5dXe/2/

+0

哇!謝謝!這是完美的。我想我在尋找完美選擇器時過於沉迷,因爲我的方法在開始時是錯誤的! – jqcAngel

+0

我不認爲這是一個很好的解決方案..特別是當你有事件綁定在HTML元素.. – batspy

相關問題