#javascript #jquery
#javascript #jquery
Вопрос:
У меня есть таблица и код jquery, и мне нужно: если td
пусто, то удалите tr
родительский элемент td
.
Как я могу это сделать?
Мой код не работает. В моем примере у меня пусто td
. Я хочу удалить tr
родительский элемент. Почему мой код не работает? Что я делаю не так? Я td
ищу каждый td
, и если td
он пуст, я удаляю tr
родительский элемент. Но не работает.. Не ошибки..
$('#table_serv tr').each(function(){
if( $(this).find('td').text().trim() === '' )
$(this).find('td').parent().remove(); // if it is empty, then remove parent tr
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table border="0" class="document-as" color="black" id="table_serv" style="font-size: 12px;border-right:0" width="100%">
<thead>
<tr>
<th style="text-align: center;color: white;font-weight: 600; width:5%"></th>
<th style="text-align: left;color: white;font-weight: 600;width:35%;"><span style="font-family:verdana,geneva,sans-serif;"><span style="color:#000000;"><strong>Description</strong></span></span>
</th>
<th style="text-align: center;color: white;font-weight: 600;width:25%;"><span style="font-family:verdana,geneva,sans-serif;"><span style="color:#000000;"><strong>Selling Price</strong></span></span>
</th>
<th style="text-align: center;color: white;font-weight: 600;width:15%;"><span style="font-family:verdana,geneva,sans-serif;"><span style="color:#000000;"><strong>Quantity</strong></span></span>
</th>
<th style="text-align: center;color: white;font-weight: 600;width:15%"><span style="font-family:verdana,geneva,sans-serif;"><span style="color:#000000;"><strong>Total</strong></span></span>
</th>
</tr>
</thead>
<tbody>
<tr>
<td class="serv-nomer" style=""><span style="font-family:verdana,geneva,sans-serif;">:0,00</span>
<br> amp;nbsp;</td>
<td style="text-align:left;"><span class="en_us" style=""></span><span class="de_de" style=""></span></td>
<td class="serv-price" style=""><span>0,00 €</span></td>
<td style=""><span style="font-family:verdana,geneva,sans-serif;">0,00</span></td>
<td style=""><span style="font-family:verdana,geneva,sans-serif;"><strong>0,00 €</strong></span></td>
</tr>
<tr>
<td class="serv-nomer" style=""><span style="font-family:verdana,geneva,sans-serif;">9:324,00</span>
<br> amp;nbsp;</td>
<td style="text-align:left;"><span class="en_us" style="">Justification safety (GOST-Norm)</span><span class="de_de" style="">Begründung Sicherheit (GOST-Norm)</span></td>
<td class="serv-price" style=""><span>324,00 €</span></td>
<td style="">1,00</td>
<td style=""><span style="font-family:verdana,geneva,sans-serif;"><strong>324,00 €</strong></span></td>
</tr>
<tr>
<td class="serv-nomer" style=""><span style="font-family:verdana,geneva,sans-serif;">SER20:432,00</span>
<br> amp;nbsp;</td>
<td style="text-align:left;"><span class="en_us" style="">Certificate TR CU 004/020/2011 for 5 Years</span><span class="de_de" style="">Zertifikat TR CU 004/020/2011 für 5 Jahre</span></td>
<td class="serv-price" style=""><span>432,00 €</span></td>
<td style="">1,00</td>
<td style=""><span style="font-family:verdana,geneva,sans-serif;"><strong>432,00 €</strong></span></td>
</tr>
<tr>
<td class="serv-nomer" style=""><span style="font-family:verdana,geneva,sans-serif;">7:34,00</span>
<br> amp;nbsp;</td>
<td style="text-align:left;"><span class="en_us" style="">Declaration TR ZU 04/2011 for 5 Years</span><span class="de_de" style="">Deklaration TR ZU 04/2011 for 5 Jahre</span></td>
<td class="serv-price" style=""><span>34,00 €</span></td>
<td style="">1,00</td>
<td style=""><span style="font-family:verdana,geneva,sans-serif;"><strong>34,00 €</strong></span></td>
</tr>
<tr>
<td class="serv-nomer" style=""><span style="font-family:verdana,geneva,sans-serif;">:0,00</span>
<br> amp;nbsp;</td>
<td style="text-align:left;"><span class="en_us" style=""></span><span class="de_de" style=""></span></td>
<td class="serv-price" style=""><span>0,00 €</span></td>
<td style=""><span style="font-family:verdana,geneva,sans-serif;">0,00</span></td>
<td style=""><span style="font-family:verdana,geneva,sans-serif;"><strong>0,00 €</strong></span></td>
</tr>
<tr>
<td class="serv-nomer" style=""><span style="font-family:verdana,geneva,sans-serif;">9:23,00</span>
<br> amp;nbsp;</td>
<td style="text-align:left;"><span class="en_us" style="">Justification safety (GOST-Norm)</span><span class="de_de" style="">Begründung Sicherheit (GOST-Norm)</span></td>
<td class="serv-price" style=""><span>23,00 €</span></td>
<td style="">1,00</td>
<td style=""><span style="font-family:verdana,geneva,sans-serif;"><strong>23,00 €</strong></span></td>
</tr>
<tr>
<td class="serv-nomer" style=""><span style="font-family:verdana,geneva,sans-serif;">SER20:43,00</span>
<br> amp;nbsp;</td>
<td style="text-align:left;"><span class="en_us" style="">Certificate TR CU 004/020/2011 for 5 Years</span><span class="de_de" style="">Zertifikat TR CU 004/020/2011 für 5 Jahre</span></td>
<td class="serv-price" style=""><span>43,00 €</span></td>
<td style="">1,00</td>
<td style=""><span style="font-family:verdana,geneva,sans-serif;"><strong>43,00 €</strong></span></td>
</tr>
<tr>
<td colspan="4" style=""><span>Sub Total</span></td>
<td><span>856,00 €</span></td>
</tr>
<tr>
<td colspan="4" style=""><span style="font-family:verdana,geneva,sans-serif;">Discount</span></td>
<td><span style="font-family:verdana,geneva,sans-serif;">0,00 €</span></td>
</tr>
<tr>
<td colspan="4" style=""><span style="font-family:verdana,geneva,sans-serif;">Total</span></td>
<td><span style="font-family:verdana,geneva,sans-serif;">856,00 €</span></td>
</tr>
<tr>
<td colspan="4" style=""><strong>amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp; Grand Total</strong></td>
<td style=""><span><span><strong>1343,92 €</strong></span></span>
</td>
</tr>
</tbody>
</table>
Комментарии:
1. где находится пустой
td
2. но ваш TD не пуст, он содержит пустой интервал, попробуйте вместо этого его найти…
3.
$(this).find('td').parent().remove();
должно быть так$(this).remove()
же, как вы повторяетеtr
4. @brk если вы запустите фрагмент, пустой
td
будет ячейка описания в первой строке — она заполнена html (spans и т. Д.), Но.text()===""
Для этой ячейки, поскольку html не включен в.text()
Ответ №1:
Проблема в том, что
$(this).find('td').text()
даст вам один текст для всей строки, а не для отдельных td
строк. Достаточно легко проверить, что он делает с:
console.log($(this).find("td").text())
что даст для первой строки что-то вроде:
:0,00 0,00 € 0,00 0,00 €
похоже, вы пытаетесь найти одну пустую ячейку (а не пустую строку) — поэтому вам нужно перебирать отдельные td
s.
Один из способов:
$('#table_serv tr td').each(function() {
if ($(this).text().trim() === '')
$(this).parent().remove();
});
Ответ №2:
Я предполагаю, что в вашем примере вы хотите удалить первую строку, чтобы код работал. Может быть, вы можете сделать его немного короче после некоторых изменений.
$(document).ready(function(){
$("tr").each(function(){
$(this).children("td").each(function(){
if($(this).text() === "")
{
$(this).parents("tr").remove();
}
});
});
});
Ответ №3:
Код был почти хорош! Вам просто нужно было также выполнить цикл td.
$('#table_serv tr').each(function(){
var tds = $(this).find('td');
tds.each(function(){
if ($(this).text() === ''){
$(this).parent().remove();
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table border="0" class="document-as" color="black" id="table_serv" style="font-size: 12px;border-right:0" width="100%">
<thead>
<tr>
<th style="text-align: center;color: white;font-weight: 600; width:5%"></th>
<th style="text-align: left;color: white;font-weight: 600;width:35%;"><span style="font-family:verdana,geneva,sans-serif;"><span style="color:#000000;"><strong>Description</strong></span></span>
</th>
<th style="text-align: center;color: white;font-weight: 600;width:25%;"><span style="font-family:verdana,geneva,sans-serif;"><span style="color:#000000;"><strong>Selling Price</strong></span></span>
</th>
<th style="text-align: center;color: white;font-weight: 600;width:15%;"><span style="font-family:verdana,geneva,sans-serif;"><span style="color:#000000;"><strong>Quantity</strong></span></span>
</th>
<th style="text-align: center;color: white;font-weight: 600;width:15%"><span style="font-family:verdana,geneva,sans-serif;"><span style="color:#000000;"><strong>Total</strong></span></span>
</th>
</tr>
</thead>
<tbody>
<tr>
<td class="serv-nomer" style=""><span style="font-family:verdana,geneva,sans-serif;">:0,00</span>
<br> amp;nbsp;</td>
<td style="text-align:left;"><span class="en_us" style=""></span><span class="de_de" style=""></span></td>
<td class="serv-price" style=""><span>0,00 €</span></td>
<td style=""><span style="font-family:verdana,geneva,sans-serif;">0,00</span></td>
<td style=""><span style="font-family:verdana,geneva,sans-serif;"><strong>0,00 €</strong></span></td>
</tr>
<tr>
<td class="serv-nomer" style=""><span style="font-family:verdana,geneva,sans-serif;">9:324,00</span>
<br> amp;nbsp;</td>
<td style="text-align:left;"><span class="en_us" style="">Justification safety (GOST-Norm)</span><span class="de_de" style="">Begründung Sicherheit (GOST-Norm)</span></td>
<td class="serv-price" style=""><span>324,00 €</span></td>
<td style="">1,00</td>
<td style=""><span style="font-family:verdana,geneva,sans-serif;"><strong>324,00 €</strong></span></td>
</tr>
<tr>
<td class="serv-nomer" style=""><span style="font-family:verdana,geneva,sans-serif;">SER20:432,00</span>
<br> amp;nbsp;</td>
<td style="text-align:left;"><span class="en_us" style="">Certificate TR CU 004/020/2011 for 5 Years</span><span class="de_de" style="">Zertifikat TR CU 004/020/2011 für 5 Jahre</span></td>
<td class="serv-price" style=""><span>432,00 €</span></td>
<td style="">1,00</td>
<td style=""><span style="font-family:verdana,geneva,sans-serif;"><strong>432,00 €</strong></span></td>
</tr>
<tr>
<td class="serv-nomer" style=""><span style="font-family:verdana,geneva,sans-serif;">7:34,00</span>
<br> amp;nbsp;</td>
<td style="text-align:left;"><span class="en_us" style="">Declaration TR ZU 04/2011 for 5 Years</span><span class="de_de" style="">Deklaration TR ZU 04/2011 for 5 Jahre</span></td>
<td class="serv-price" style=""><span>34,00 €</span></td>
<td style="">1,00</td>
<td style=""><span style="font-family:verdana,geneva,sans-serif;"><strong>34,00 €</strong></span></td>
</tr>
<tr>
<td class="serv-nomer" style=""><span style="font-family:verdana,geneva,sans-serif;">:0,00</span>
<br> amp;nbsp;</td>
<td style="text-align:left;"><span class="en_us" style=""></span><span class="de_de" style=""></span></td>
<td class="serv-price" style=""><span>0,00 €</span></td>
<td style=""><span style="font-family:verdana,geneva,sans-serif;">0,00</span></td>
<td style=""><span style="font-family:verdana,geneva,sans-serif;"><strong>0,00 €</strong></span></td>
</tr>
<tr>
<td class="serv-nomer" style=""><span style="font-family:verdana,geneva,sans-serif;">9:23,00</span>
<br> amp;nbsp;</td>
<td style="text-align:left;"><span class="en_us" style="">Justification safety (GOST-Norm)</span><span class="de_de" style="">Begründung Sicherheit (GOST-Norm)</span></td>
<td class="serv-price" style=""><span>23,00 €</span></td>
<td style="">1,00</td>
<td style=""><span style="font-family:verdana,geneva,sans-serif;"><strong>23,00 €</strong></span></td>
</tr>
<tr>
<td class="serv-nomer" style=""><span style="font-family:verdana,geneva,sans-serif;">SER20:43,00</span>
<br> amp;nbsp;</td>
<td style="text-align:left;"><span class="en_us" style="">Certificate TR CU 004/020/2011 for 5 Years</span><span class="de_de" style="">Zertifikat TR CU 004/020/2011 für 5 Jahre</span></td>
<td class="serv-price" style=""><span>43,00 €</span></td>
<td style="">1,00</td>
<td style=""><span style="font-family:verdana,geneva,sans-serif;"><strong>43,00 €</strong></span></td>
</tr>
<tr>
<td colspan="4" style=""><span>Sub Total</span></td>
<td><span>856,00 €</span></td>
</tr>
<tr>
<td colspan="4" style=""><span style="font-family:verdana,geneva,sans-serif;">Discount</span></td>
<td><span style="font-family:verdana,geneva,sans-serif;">0,00 €</span></td>
</tr>
<tr>
<td colspan="4" style=""><span style="font-family:verdana,geneva,sans-serif;">Total</span></td>
<td><span style="font-family:verdana,geneva,sans-serif;">856,00 €</span></td>
</tr>
<tr>
<td colspan="4" style=""><strong>amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp; Grand Total</strong></td>
<td style=""><span><span><strong>1343,92 €</strong></span></span>
</td>
</tr>
</tbody>
</table>
Ответ №4:
Вот решение, которое мне пришлось придумать некоторое время назад, потому что я не хотел, чтобы определенные td появлялись в моей таблице, если они были пустыми. Это удаляет их, и они больше не являются их, но это альтернатива, которую вы можете сделать в своем тексте CSS. Это .td
класс, поэтому назовите его как хотите, в моем реальном коде он выглядит как .tddata
.td:empty {
display: none;
height: 0;
width: 0;
padding: 0px;
}