【问题标题】:HTML structure in treeview with jQuery使用 jQuery 在树视图中的 HTML 结构
【发布时间】:2013-02-27 19:00:18
【问题描述】:

我需要在树视图中显示 HTML 结构。我找到了一些 jQuery treeview 插件,但它们通常需要一个列表。

我们来看一个简单的 HTML(节点可能有不同的标签,而不仅仅是 'div'):

<div id="node1">
    <div id="node2">
        <div id="node3"></div>
        <div id="node4"></div>
    </div>
<div>

我想这样显示:

  • 节点1
    • 节点2
      • 节点3
      • node4
  • 目前,我正在使用这个 jQuery 插件:treeview

    所以我需要将 HTML 转换为这样的无序列表:

    <ul>
        <li>node1
            <ul>
                <li>node2
                    <ul>
                        <li>node3</li>
                        <li>node4</li>
                    </ul>
                </li>
            </ul>
        </li>
    </ul>
    

    如何使用 jQuery 做到这一点?如果您认为其他方法会更好,请告诉我。

    【问题讨论】:

    • 你不能在你的源代码编辑器中做一个字符串替换吗?
    • 它应该是动态工作的,替换不能解决问题。

    标签: javascript jquery html treeview html-lists


    【解决方案1】:

    给你……这很有趣。 Demo - 更新为不特定于 div 标记,并返回一个元素,该元素可以转换为 html 字符串。

    $.fn.convertToUL = function(isTop) { 
        if(isTop==null) isTop=true;
        var ul=$("<ul>");
        var li=$("<li>");
        li.append($(this).attr("id"));
        var children=0;
        $(this).children().each(function(){
            ul.append($(this).convertToUL(false));
            children++;
        });
        if(children>0)
            li.append(ul);
        if(li.is(':empty'))
            return "";
        if(isTop)
            return $("<ul>").append(li);
        return li;
    }
    
    //to get text of elements use .wrap('<div/>').parent().html()
    var ulElement=$("#node1").convertToUL();
    alert(ulElement.wrap('<div/>').parent().html());
    $("#node1").replaceWith(ulElement);
    

    【讨论】:

    • 这太棒了 Michael_B!除了我不想替换现有的 HTML。我需要它作为一个单独的字符串。我的问题不清楚。
    • @Victor,我再次对其进行了修改以作为元素返回......并展示了如何将其作为字符串获取。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多