我不明白为什么这段代码不起作用。表行应该删除,但不是。确认框显示正常。
也许我的行ID或var elementId
有问题 - 我不确定。
<table> // some table code missing in this example because it's not necessary
<tr id="orderEmpty" style="display: none;"><td><i class="text-muted">No items.</i></td></tr>
<tr id="00001"><td><a href="#" onclick="deleteRow('00001')">Delete</a></td></tr>
</table>
<script>
function deleteRow($rowToDel) {
var result = confirm("Are you sure? Delete row from order?");
if (result) {
var elementId = $rowToDel;
var rowCount = $('#orderTable tbody tr').length;
if (rowCount < 3) {
$('#' + $rowToDel + '').closest('tr').remove();
$("#orderEmpty").fadeIn();
} else {
$('#' + $rowToDel + '').closest('tr').remove();
}
}
}
</script>
答案 0 :(得分:1)
您给出的示例代码已经适用于我;请看这个jsFiddle:https://jsfiddle.net/v30fv89t/
我怀疑您使用的实际标记较长,但在您提供的示例中,b
始终为rowCount
,因为没有0
或{{1因此,当调用#orderTable
时,分支将始终执行。
如果可以,请发布更广泛的标记版本 - 至少足够广泛,以便您的代码完全针对您正在使用的标记进行测试。
答案 1 :(得分:0)
如果您删除.closest('tr')
,它应该有效。您已经选择了尝试使用jQuery构造函数删除的tr
。
同样+ ''
是不必要的,因为当int添加到一个(在这种情况下是'#'
)时,int被转换为sting。