4

各ループなしでこれを行う簡単な方法はありますか。

全体を非表示にしたいのですが、そのすべてが空白の<tr>場合に限ります。<td>テーブルは動的に生成されるため、空白行はどこにでもある可能性があります。

$('#table1 tr:has(td):empty').remove();

HTML

<table id="table1">
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
</tr>
<tr >
<td></td>
<td></td>
<td></td>
</tr>
...
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
</tr>
</table>
4

2 に答える 2

11

trこれはまだ暗黙のうちに各要素を調べていますが、私はお勧めします。

$('tr').filter(
    function(){
        return $(this).find('td').length == $(this).find('td:empty').length;
    }).hide();

JS フィドルのデモ

これは、かなりのクロスブラウザーの問題がありますが、CSS では、:not()および:empty疑似セレクターを使用して可能です。

tr td:empty {
    visibility: hidden;
    height: 0;
}

​td:not(:empty) ~ td:empty {
    visibility: visible;
    height: 100%;
}​

JS フィドルのデモ

参考文献:

于 2012-07-05T14:22:22.793 に答える
10

それぞれを使用したい場合は、次のようにできます。

$('#table1 tr').each(function() {
    if ($(this).find('td:empty').length) $(this).remove();
});​

jsFiddle の例

于 2012-07-05T14:35:56.433 に答える