首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将HTML ul-li结构保存到javascript对象中

如何将HTML ul-li结构保存到javascript对象中
EN

Stack Overflow用户
提问于 2012-06-22 20:43:49
回答 3查看 2.5K关注 0票数 2

我有下面的html结构usilg ul和li。

代码语言:javascript
复制
<ul class="treeview" id="productTree">
   <li class="collapsable lastCollapsable">
     <div class="hitarea collapsable-hitarea lastCollapsable-hitarea"></div>
     <span id="top1" class="">top1</span>
     <ul>
       <li class="collapsable lastCollapsable">
         <span class="">mod1</span>
         <ul>
           <li class="last">
              <span>bottom1</span>
           </li>
         </ul>
       </li>
     </ul>
   </li>
   <li class="collapsable lastCollapsable">
     <span id="top2" class="">top2</span>
     <ul>
       <li class="collapsable lastCollapsable">
         <span class="">mid2</span>
           <ul>
             <li class="last">
                <span>bottom2</span>
             </li>
           </ul>
        </li>
      </ul>
    </li>
</ul>

该网站允许用户在此结构下添加更多数据,并使用jquery treeview动态显示树结构。现在,我需要将整个ul-li结构保存到一个js对象中,以便将来在网站中使用。我该如何实现这一点?最后一个节点(这里是“bottom1和bottom2”)有一个类" last“,如果有帮助的话。因为我们可以动态地添加数据,所以我们可以确定当用户单击“保存”时,最终的ul li级别是多少。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-22 21:37:51

可以使用递归函数来保存树对象;

代码语言:javascript
复制
function save(obj_ul, tree){

    var obj_lis = obj_ul.find("li")

    if (obj_lis.length == 0) return;        

    obj_lis.each(function(){
        var $this = $(this);
        if($this.parent("ul").get(0) == obj_ul.get(0))
        {
            tree.push({
                name : $this.find('> span').text(),
                child : save($this.find("ul").first(), [])
            });


        }
    });
    return tree;
}

console.log(save($('#productTree'), []));
票数 2
EN

Stack Overflow用户

发布于 2012-06-22 20:51:56

如果你想在站点的其他地方逐字复制相同的东西,作为HTML字符串,你可以这样做吗?然后在你喜欢的地方使用.append().prepend() treeview

productTree var treeview =$(‘#​’).parent().html()

票数 0
EN

Stack Overflow用户

发布于 2012-06-22 20:54:28

假设您需要JSON:

代码语言:javascript
复制
function save(){
    var tmp = [];

    $('#productTree li.collapsable').each(function(){
        var $this = $(this),
            $spans = $this.find('span'),
            o = [];

            $spans.each(function(){
               o.push($(this).text())
            })

            tmp.push(o);
    });
    return tmp;
}

您也可以使用map()来完成相同的任务。

编辑:已更新,假设您的文本将存在于span中。这将创建一个数组数组,每个数组包含来自每个列表项中的span的文本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11156416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档