2011-08-05 9 views
1

私は、フォーマットI することはできません変化とこのようになりますhtmlページがあります。私は、テキストを含む3の「ブロック」のそれぞれをラップする必要が上記の例を使用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> 

問題ノード内のノードすべての「ブロック」は、<font>または<a href>要素で始まり、末尾が<br><br>であることがわかります。

私はこれを機能させるために壁に向かって頭を叩いています。残念ながら、ほとんどのjQuery関数はテキストノードを「プッシュ」するようです。さらに、 "nextUntil"関数は、最初のセレクタをラップ演算から除外します。そうでなければ、完璧な解決策であるように見えます。純粋なjavascriptソリューションも機能しますが、この問題はjQueryが解決しようとしていたようなものです。

私が...助けたいすべての勇敢な魂のためのような 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>"); 
} 

jsFiddleを設定:http://jsfiddle.net/Jacek_FH/e5dXe/2/

+0

うわー!ありがとうございました!それは完全に機能します。私のアプローチが間違っていたときに、完璧なセレクターを見つけることに夢中になっていたと思います! – jqcAngel

+0

私はそれが良い解決策だとは思わない。特に、html要素でイベントが巻き込まれている場合。 – batspy

関連する問題