我有这个表结构
<table id="latest" class="debt">
<thead>
<tr>
<th width="50">Credor</th>
<th width="50">Devedor</th>
<th>Motivo</th>
<th width="80">Valor</th>
<th width="10"></th>
</tr>
</thead>
<tbody>
<?PHP foreach ($this->latest as $latest) { ?>
<tr <?PHP if ($latest->reg_value < 0) { echo "class='error'"; } ?>>
<td><?PHP echo $latest->findParentRow('Application_Model_DbTable_Names','Creditor')->nam_name; ?></td>
<td><?PHP echo $latest->findParentRow('Application_Model_DbTable_Names','Debtor')->nam_name; ?></td>
<td><?PHP echo $latest->reg_reason; ?></td>
<td>R$<?PHP echo number_format(abs($latest->reg_value), 2, ',', ' ')?></td>
<td><a href="#" id="<?PHP echo $latest->reg_id; ?>" class="delete"><img src="http://192.168.0.102/libraries/css/blueprint/plugins/buttons/icons/cross.png" alt=""/></a></td>
</tr>
<?PHP } ?>
</tbody>
</table>
每行都有一个删除按钮,它使用AJAX并删除tr元素本身.会发生什么:当删除所有行时,tbody可能会变空,当发生这种情况时,我想删除所有表.
我知道有一个伪选择器$(‘#latest tbody:empty’)但是这只选择了tbody.我想在tbody为空或类似的东西时选择整个表格.
编辑后回答
我在删除所有行后检查了元素:只有标签内的thead标签.尽管如此,它并没有删除表元素.看看代码
// TR Fading when deleted
$('.delete').live('click', function() {
$.ajax({
type: 'POST',
url: 'history/delete/id/'+$(this).attr('id')
});
$(this).closest('tr').fadeOut('slow', function() {
$(this).remove();
if($(this).closest('table').find('tbody').is(':empty'))
$('#latest').remove();
});
return false;
});
解决方法:
if($('#latest tbody').is(':empty'))
$('#latest').remove();
你可能压缩这个
$('#latest tbody:empty').parent().remove();
更新
这不行.看起来像remove()和detach()在删除tr元素后会留下某种瑕疵.它就像一个空格或换行符,所以由于:empty选择器也检查textnodes,它根本不是空的.
所以
if($('#latest tbody').children().length() < 1)
$('#latest').remove();
应该做的伎俩.
参考:http://jsbin.com/esaye3/2/edit
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。