使用jQuery通过id删除表行

时间:2015-08-12 23:38:09

标签: javascript jquery html

我不明白为什么这段代码不起作用。表行应该删除,但不是。确认框显示正常。

也许我的行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>

2 个答案:

答案 0 :(得分:1)

您给出的示例代码已经适用于我;请看这个jsFiddle:https://jsfiddle.net/v30fv89t/

我怀疑您使用的实际标记较长,但在您提供的示例中,b始终为rowCount,因为没有0或{{1因此,当调用#orderTable时,分支将始终执行。

如果可以,请发布更广泛的标记版本 - 至少足够广泛,以便您的代码完全针对您正在使用的标记进行测试。

答案 1 :(得分:0)

如果您删除.closest('tr'),它应该有效。您已经选择了尝试使用jQuery构造函数删除的tr

同样+ ''是不必要的,因为当int添加到一个(在这种情况下是'#')时,int被转换为sting。