2

我有个问题。如何多次使用 parentNode 属性?

我知道我可以做这样的事情:

document.getElementById("mytag").parentNode.parentNode.remove();

或者类似的东西。我的问题不是我可以添加或多或少的 .parentNode 来删除我想要删除的任何内容。

我的问题是我想创建一个用户友好的应用程序,用户可以在其中自行声明应该删除多少父节点。

起初我尝试通过循环添加 .parentNode 。它不起作用。第二次我尝试了同样的 eval() 函数。结果相同。

有没有人有一个很好的解决方案我怎么能做到这一点?如果有机会您只需说出父节点的数量,这将非常有用。

这里有一个小例子。我将“自动”完成的工作:

myFunction(..., ..., 3) {
    ...
    document.getElementById("mytag").parentNode.parentNode.parentNode.remove();
}

或者

myFunction(..., ..., 2) {
    ...
    document.getElementById("mytag").parentNode.parentNode.remove();
}

或者

myFunction(..., ..., 1) {
    ...
    document.getElementById("mytag").parentNode.remove();
}

非常感谢。

我更喜欢纯 JS 的解决方案。一个额外的 jQuery 解决方案也很好。

4

1 回答 1

2

这个功能应该做的工作:

function removeParent(element, num) {
    var parent = element;
    for (var i = 0; i < num; i++) {
        if (parent.parentNode) {
            parent = parent.parentNode;
        }
    }
    parent.remove();
}

您可以在此页面上对其进行测试。例如,stackoverflow 徽标。HTML结构是这样的:

HTML
    HEAD
    BODY
        DIV.container
            DIV#header
                DIV#hlogo

打开控制台,复制粘贴函数,然后输入removeParent(hlogo, 4). 整个页面将消失:)

于 2016-02-28T23:19:54.417 回答