Javascript jQuery将值从无限ul级别推送到JSON

Javascript jQuery将值从无限ul级别推送到JSON,javascript,jquery,json,Javascript,Jquery,Json,我试图用JSON从无限的孩子(例如ul>ul>ul>ul..)推送所有ul>li值 所以我这样做了,但是我不能循环子类别 getCategories(elem){ $(elem).children().each(function() { var el = $(this), child = $(this).children('ul'), item = { Id: el.data('id'),

我试图用JSON从无限的孩子(例如ul>ul>ul>ul..)推送所有
ul>li

所以我这样做了,但是我不能循环
子类别

getCategories(elem){
   $(elem).children().each(function() {
       var el = $(this),
           child = $(this).children('ul'),
           item = {
              Id: el.data('id'),
              URL: el.find('a').attr('href'),
              Name: el.find('a').text(),
              Sort: el.data('sort'),
              if (child.length > 0) {
                 Subcategories: getCategories(child);
              }
           };
           categories.push(item);
      });
      return categories
}
item['categories'] = getCategories('#categories ul.ui-sortable');
和示例HTML:

<div id="categories">
    <ul class="ui-sortable">
        <li><a>1</a>
            <ul>
                <li><a>1.1</a>
                    <ul>
                        <li><a>1.1.1</a>
                        ....
                    </ul>
                </li>
            </ul>
        </li>
    </ul>
</div>

  • 关于我到现在为止所做的,但仍然是错误的,subcategories=2x

    不要这样写:$(elem).children().each(function()){

    请尝试以下操作,而不是此代码:

     $(elem).find("ul").each(function() {
    });
    
    此选择器将为该元素下的所有ul运行

    感谢您的帮助,我修复了它

    function pushULtoJson(elem){
            var array = []
            $(elem).first().children('li').each(function(i){
                var Subcategories = []
                var childUL = $(this).find('>ul');
                array.push({
                    Id: $(this).data('id'),
                    URL: $(this).find('a').attr('href'),
                    Name: $(this).find('>a').text().replace(/'/g,"’"),
                    Subcategories:pushULtoJson(childUL)
                });
            });
            return array
        }
    

    ul有一个树形结构。使用dfs算法进行迭代很简单。此函数是递归的,查找并获取所有嵌套的ul元素