0

我很想首先说我还不是 JQuery 方面的专家,而且我知道我在这里做错了什么。

问题是,当我从元素中删除子元素时,它只会清空子元素并将其挂在父节点中:

编码:

function DeleteAttributeFromNr(id) {
    $("#tbodyAttributes").children("#row-" + id).remove();

    CheckAttributes();
}

function CheckAttributes() {
    if ($("#tbodyAttributes tr").length <= 1) {
        $("#tbAttributes tbody").append('<tr><td colspan="3" id="tdEmptyBody">You have no attributes assigned to this number yet.</td></tr>');
    } else if ($("#tdEmptyBody").length == 1) {
        $("#tdEmptyBody").remove();
    }
}

几次删除后的结果"#tbodyAttributes tr"

<tbody id="tbodyAttributes">
    <tr></tr>
    <tr></tr>
</tbody>

正如您可能注意到的,这对于我在 CheckAttributes 中的逻辑代码来说是一个公平的错误。<tr>有没有其他方法可以整体去除?

我试过了:

$("#tbodyAttributes").removeChild("#row-" + id); //Very surprised this did not exist
$("#tbodyAttributes").children("#row-" + id).remove();
$("#tbodyAttributes").find("#row-" + id).remove();
$("#row-" + id).remove();
$("#row-" + id).empty(); //desperation run, I knew this one would not work since I use it a lot to clear out tables

我知道这很明显。我确实侦察了whackystacky,但没有找到答案(我能找到)

4

2 回答 2

1

试试这个:

function CheckAttributes() {
    if ($("#tbodyAttributes tr").length <= 1) {
        $("#tbAttributes tbody").append('<tr><td colspan="3" id="tdEmptyBody">You have no attributes assigned to this number yet.</td></tr>');
    } else if ($("#tdEmptyBody").length == 1) {

        // $("#tdEmptyBody").remove();  This just remove the td only
        $("#tdEmptyBody").closest('tr').remove();
    }
}

并删除空tr

$("#tbodyAttributes > tr:empty").remove();
于 2013-04-09T12:25:18.163 回答
0

找到了。我有一个大脑衰退。

我正忙于删除tr 标签的子标签<td colspan="3" id="tdEmptyBody">You have no attributes assigned to this number yet.</td>,它不是<tr>tr 标签的子标签。这意味着除非我将 tr:empty 与 tdEmptyBody 一起删除,否则空的 tr 标记将保留

解决方案:

 $("#tbAttributes tbody").append('<tr id="trEmptyBody"><td colspan="3" >You have no attributes assigned to this number yet.</td></tr>');

我不得不将此处的 tr 元素重命名为 trEmptyBody,并将我的代码引用更新为它。

        if ($("#tbodyAttributes tr").length <= 1) {
            $("#tbAttributes tbody").append('<tr id="trEmptyBody"><td colspan="3" >You have no attributes assigned to this number yet.</td></tr>');
        } else if ($("#trEmptyBody").length == 1) {
            $("#tbAttributes #trEmptyBody").remove();
        }

我的代码现在可以工作了。为浪费大家的时间道歉

于 2013-04-09T12:37:41.053 回答