-1

現在、私のドキュメントにはすべて class の下にいくつかのテーブルがありtable.gridます。<td>フィールドのないテーブル ヘッダー、つまり空のテーブル/生成された結果のないテーブルを調べて削除しようとしています。ヘッダーのテーブル クラスの階層は でtable.grid tbody tr.header thあり、td はその後table.grid tbody tr td です。現在、私のコードは次のとおりです。

$('table.grid tbody tr.header th').each(function (i) {
    var remove = 0;
    var tds = $(this).parents('tbody').find('tr td:nth-child(' + (i + 1) + ')');

    tds.each(function (j) {
        if (this.innerHTML == '') remove++;
    });

    if (remove == ($('table.grid tbody tr td').length - 1)) {
        $(this).hide();
        tds.hide();
    }
});

残念ながら、これはすべてのテーブル ヘッダーを削除しています。コンテンツのないものだけではありません。if ステートメントでフィールドを間違って呼び出しているtdと思いますが、修正方法がわかりません。私はそれを as として呼び出しようとしましたが、オペレーターを無駄に$(this).next('table.grid tbody tr td').length - 1)しようとしました。closest()

4

1 に答える 1

1

テーブルを非表示にするというあなたの正確な要件を100%理解しているとは言えません。「空の」テーブルには、ヘッダー情報を持つ行が 1 つしかないという仮定の下で行っています。他の行にはコンテンツがあり、そのテーブルは空ではありません。これを活用して、ヘッダー以外の行の数を確認することにしました。

$('table.grid').each(function (i) {
    //Select all rows in this table that aren't .header
    var rows = $(this).find("tr").not(".header");

    if (rows.length == 0)
    {
        //no rows except for header - hide the table.
        $(this).hide();
    }
});

これは、提供した HTML を使用して、こちらのフィドルで確認できます。ヘッダーを超える行がないため、2 番目のテーブルは非表示になっています。

注意点として、このアプリケーションのサーバー側を制御している場合、空の結果セットを検出してスキップし、後でクリーンアップする必要がないようにすることをお勧めします。オプションとしてそれがない場合があるため、これは代わりにブラウザで処理するのに役立つ場合があります。

何をいつ隠すかというあなたのニーズを誤解していた場合は、お知らせください。

于 2013-06-27T21:07:04.633 に答える