2012-04-27 4 views
0

divクラス= "appArea"内の最初の<td>からHTMLのセクションを解析して読み込み(変数に格納)するjQuery関数を探しています。 class = "tb_pages"のクラスを持つテーブルに到達し、次に停止します。jQuery関数HTMLの部分を解析する

私はeach()関数が必要だと思いますが、動作させることはできません。

<div class="appArea"> 

<p class="cstmTitle">Team Wilson</p> 
<table width="100%" cellpadding="5" cellspacing="0" border="0"> 
<tr valign="top"> 
<td> 

<p> 
<p>We are proud to do our part to change the future and make a positive impact in the lives of others.</p> 
<p><strong>Bullet List Ex</strong>:</p> 
<ul> 
<li>First</li> 
<li>Second </li> 
</ul> 

<table class="tb_pages" border="0"> 
<thead> 
<tr> 
<th>Bacon</th> 
+0

「_reading_」はどういう意味ですか? – Tadeck

+0

read =変数に格納します。 – meme

+2

彼は彼があまりにも多くのコンソールプログラミングを行ったことを意味すると思います – SpYk3HH

答えて

2

少し醜いですが、効率がそれを支払う私の「ソリューション」:

var myHTML = "", isReading = false; 

$(".appArea").children().each(function() { 
    if(this.tagName == "td") isReading = true; 
    else if($(this).hasClass("tb_pages") isReading = false; 
    if(isReading) myHTML += $(this).html(); 
}); 

またはわずかにより醜いが、同じように、わずかに、より効率的、私のお気に入りのif速記を使用したソリューション:

var myHTML = "", isReading = false; 

$(".appArea").children().each(function() { 
    this.tagName == "td" && (isReading = true); 
    $(this).hasClass("tb_pages") && (isReading = false); 
    isReading && (myHTML += $(this).html()); 
}); 

またはに代わるslice()の代わりを使用して、の答えをiambriansreed split()(わずかに速いことが、同じように醜い必要があります):

var $fullHTML = $(".appArea").html() 
var myHTML = fullHTML.slice(fullHTML.indexOf("<td>"), fullHTML.indexOf('<table class="tb_pages"')); 
+0

ニース。私は私の 'c'が頭の上に釘を打つと思う。 – iambriansreed

+0

'c'は醜いイホですが、間違いなくトリックです。ニース。 –

+0

私は可読性を助けるためにラインを壊しました。純粋なjQueryを手に入れて、純粋なナチスを背中から守らなければなりませんでした。 – iambriansreed

2

醜い:

var a = $('.appArea td:first').html().split('<table class="tb_pages"')[0]; 

var b = $('.appArea td:first').html().split(/<table(.*?)class="(.*?)tb_pages/)[0]; 

プリティ:

var c = $('div').append(
     $('.appArea td:first table.tb_pages').prevAll().clone() 
    ).html(); 

はあなたの毒を選択してください。

+1

非常にいいですが、それはブレンドされますか? +1:p –

+1

これは実際には適切で、この質問のためにjQueryでできることは最高だと思います。 OPはマークアップをツリーではなくストリームとして扱います。スクレイプされたビットは論理DOMノードではありません。 – paislee

+0

一部の正規表現のファンが私をちょっと締めるのを助けることができると確信しています。 – iambriansreed

0
$('div.appArea td:first table.tb_pages').prevAll() 

は、TDの内側が、tb_pagesテーブルの前にすべてを取得します。

関連する問題