1

我问了关于解析文档的标题和创建嵌套 dom 结构的问题(通过和无序列表)

如何稳健地解析任何标题的文档并构建仅包含这些标题的 <ul> 树

在第二个答案中,提出了一个解决方案和一个小提琴:http: //jsfiddle.net/fA4EW/

解决方案很接近,但似乎不适用于包含带引号的属性的元素,所以我尝试在 jQuery http://jsfiddle.net/funkyeah/s8m2t/3/中重构它

我觉得我真的很接近让它发挥作用,但解决方法之间的差异

elm/li.appendChild 和我的代码 $elm/li.append (它们似乎返回不同的值并以不同的方式修改 elm/$elm 对​​象)

      do {
            li = elm.lastChild;
            if(li == null)
                li = elm.appendChild(document.createElement("li"));
            elm = li.appendChild(document.createElement("ul"));
            cnt++;
        } while(cnt < (curLv - lv));
    }
    li = elm.appendChild(document.createElement("li"));
    // replace the next line with archor tags or whatever you want
    li.innerHTML = node.innerHTML;
4

1 回答 1

2

append 和 appendChild 的区别

好吧,jQuery 变体更健壮。它还接受多个参数,类型为 htmlString、jQuery 集合或元素数组,甚至是回调函数。如果要插入多个父元素,它会自动克隆元素。本机方法只需要单个节点(或单个 DocumentFragments)。

他们似乎返回不同的值

是的。.append()返回上下文 jQuery 集合(它附加到该集合),同时.appendChild返回附加的元素。

这似乎是您的代码中的问题,天真的转换会导致不同的li值。如果您确实需要让孩子回来(有更简单的解决方案),您可以看看.appendTo方法

并以不同方式修改 elm/$elm 对​​象

不,他们没有。两者都将附加的元素放在父子集合的末尾。您可能在设置innerHTML返回值的值时遇到问题,这不是您所期望的(见上文)。

于 2013-07-03T15:42:16.237 回答