0

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

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>
4

3 に答える 3

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();

あなたの毒を選んでください。

于 2012-04-27T01:04:14.360 に答える
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());
});

または、代わりに使用するiambriansreedの答えのslice()代わりsplit()(少し速くなるはずですが、同じくらい醜い):

var $fullHTML = $(".appArea").html()
var myHTML = fullHTML.slice(fullHTML.indexOf("<td>"), fullHTML.indexOf('<table class="tb_pages"'));
于 2012-04-27T01:06:35.670 に答える
0
$('div.appArea td:first table.tb_pages').prevAll()

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

于 2012-04-27T01:16:01.107 に答える