0

1 を含む TD の色を設定する必要がありますが、AAA を含む TH のみです。このテーブルがあり、このスクリプトを準備します。しかし、スクリプトは機能しません。アイデアはありますか?

ありがとうございました

テーブル

<TABLE>
<TR><TH COLSPAN="2">AAA</TH></TR>
<TR>
    <TD>1</TD>
    <TD>2</TD>
</TR>
 <TR>
    <TD>A</TD>
    <TD>B</TD>
</TR>
<TR><TH COLSPAN="2">DDD</TH></TR>
<TR>
    <TD>1</TD>
    <TD>2</TD>
</TR>
 <TR>
    <TD>A</TD>
    <TD>B</TD>
</TR>
</TABLE>

脚本

$('tr').each(function(){
var tr = $(this);
if (tr.find('th:eq(0)').text()=="AAA") {
    if(tr.find('td:eq(0)').text()=="1") tr.addClass('hidden');
}
});

CSS

.hidden{
color:red;
 }
4

3 に答える 3

3

<TH>が他の行と混在する方法のため、最も簡単な解決策は、次のようにすべての行をループすることです。

var lastHeader = '';
$('table tr').each(function() {
    var cells = $(this).find('td,th');
    if (cells.filter('th').size() > 0) { // this is a header row            
        lastHeader = cells.text();
    } else if (lastHeader == 'AAA') { // it's under an AAA section
        cells.filter(':contains(1)').addClass('hidden');
    }
});

ここでこの例を見ることができます: http://jsfiddle.net/kapvr/

上記のスクリプトでは、テキストを含む任意のセルにクラスを追加するためのちょっとしたショートカットを使用し1ました。さらにコンテンツがある場合でも同様です。完全一致が必要な場合は、次のように変更できます。

var lastHeader = '';
$('table tr').each(function() {
    var cells = $(this).find('td,th');
    if (cells.filter('th').size() > 0) { // this is a header row            
        lastHeader = cells.text();
    } else if (lastHeader == 'AAA') { // it's under an AAA section
        cells.each(function() {
            if ($(this).text() == '1') $(this).addClass('hidden');
        });
    }
});

そのバージョンはここで実際に見ることができます: http://jsfiddle.net/5ybPp/

于 2013-07-27T21:54:32.620 に答える
1

each ループの本体は単一の を調べ、両方をtr見つけようとしますが、HTML ではとは同じ行にありません。inを探すか、 inを探す必要があります。thtdthtdthtr.prev()tdtr.next()

于 2013-07-27T21:31:23.647 に答える