私はhtmlテーブルを持っています:
<table>
<tr >
<td>name 1</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr >
<td>name 2</td>
<td>-</td>
<td>158,5</td>
<td>-</td>
</tr>
</table>
すべての値が「-」に相当する行を削除/非表示にしたいのですが、それを行う最善の方法は何ですか?
私はhtmlテーブルを持っています:
<table>
<tr >
<td>name 1</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr >
<td>name 2</td>
<td>-</td>
<td>158,5</td>
<td>-</td>
</tr>
</table>
すべての値が「-」に相当する行を削除/非表示にしたいのですが、それを行う最善の方法は何ですか?
他のテーブルから行を取得しないように、テーブルに ID を追加すると簡単です...
<table id="Example">
...
ここに例があります...
$('#Example tr').each( function () {
var self = $(this);
var allEmpty = true;
$('td', self).each( function () {
if ($(this).text() !== '-') {
allEmpty = false;
}
});
if (allEmpty) {
self.hide();
}
});
これにより、すべてのフィールドが正確に一致する行が削除されます-
。必要に応じて、カスタム ロジックを追加してこれを変更できます。
$('tr').each(function() {
var self = $(this);
var EmptyCheck = true;
$('td:not(:eq(0))', self).each(function() {
if ($(this).text() !== '-') {
EmptyCheck = false;
console.log($(this));
}
});
if (EmptyCheck) {
self.hide();
EmptyCheck = true;
}
});
メソッドを使用できますfilter
。
$('table td').filter(function(){
var txt = this.textContent || this.innerText;
return txt === '-';
}).hide();
これを試してみてください。
$("table tr td").each(function(){
if($(this).html() == "-")
{
$(this).css('display','none'); // if you want to hide
$(this).remove(); // if you want to remove
}
});