0

我编写了以下方法来展平嵌套列表的深层层次结构(我使用的是 TypeScript,但您了解 JS 的想法)。

该方法针对每个顶级<li>元素运行,以在其<li>自身之后插入其所有后代:

    // Flatten a nested list branch - acts in reverse to allow for nested lists
    _flattenBranch(element: HTMLElement)
    {
        var el = $(element);
        $(el.find('li').get().reverse()).each(function ()
        {
            el.after(this);
        });
        // FIX: This is not removing empty descendant lists!
        el.find('ul').remove();
    }

<ul></ul>我注意到在查看生成的输出时,我在一些 s 下仍然有空的<li>s。我错过了什么?

更新(和复制):

试试这个jsfiddle:http: //jsfiddle.net/3gu7L/3/

这导致输出中出现以下错误:

<li>Application Form
    <ul>
    </ul>
</li>

- 如果使用以下代码(类似于我的代码)调用Arun P Johnyjsfiddle<ul> ,它会使层次结构变平,但无法删除某些元素上的子元素:

$('#test').children('li').each(function(){
    test(this)
});
4

1 回答 1

0

这是一个简单的解决方案,但前提是您有 3 级列表:

function test(element){
    var el = $(element);
    $(el.find('li').get().reverse()).each(function () {
        el.after(this);
        $(this).find('ul').remove();
    });
    // FIX: This is not removing empty descendant lists!
    el.find('ul').remove();
}
$('#test').children('li').each(function(){
    test(this)
});

在您的示例中,您尝试在Home<ul>的孩子中查找 all ,但Application Form不再是Home的孩子。

于 2013-05-01T19:50:58.657 回答