我试图从内部少于4 td 的表中删除任何 tr 。
因此,例如,在此表中,我希望第二个tr消失:
HTML
<table>
<tbdy>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</tbody>
</table>
我正在尝试这样的事情
的jQuery
if ($('table tbody tr td').length >= 4) {
//4 i ok so do nothing
} else {
$(this).parent("tr").remove();
}
但我无处可去。 有什么帮助吗?
答案 0 :(得分:5)
将jQuery :has()
选择器与:not()
和:nth-child()
伪类选择器一起使用。
$('tr:not(:has(:nth-child(4)))').remove()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tbody>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</tbody>
</table>
或者,使用filter()
方法过滤掉仅包含td
小于4的元素并删除。
$('tr').filter(function() {
return $(this).children('td').length < 4;
}).remove()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tbody>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</tbody>
</table>
答案 1 :(得分:3)
这应该有效:
$('table tbody tr').each(function() {
var $tr = $(this);
if ($tr.find('> td').length < 4) {
$tr.remove();
}
});
答案 2 :(得分:1)
你的结构应该是:
<table>
<tbody>
<tr>
您可以选择:
$('table tbody tr')
要获得少于4列的所有tr,你应该遍历它们。
您的最终代码应为:
$('table tbody tr').each(function() {
var row = $(this);
if (row.find('td').length < 4) {
row.remove();
}
});