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

时间:2017-03-17 11:46:53

标签: javascript jquery json

我正试图在JSON中推送无限制儿童的所有(defrule my_rule "comment me" (object (is-a A) (ref_to_b ?ref_to_b)) (?ref_to_b (some_prop_of_b "some_string")) => ) 值(例如ul> ul> ul> ul ..)。

所以我这样做但我无法循环ul>li

Subcategories

并示例HTML:

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');

现在我只获得了第一级并尝试了一个没有运气的函数/循环。

任何帮助都将受到高度赞赏!

更新: This is a fiddle我现在所做的事情,但仍然是错误的,子类别= 2x

2 个答案:

答案 0 :(得分:0)

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

代替此代码,请尝试:

 $(elem).find("ul").each(function() {
});

此选择器将针对该元素

下的所有 ul 运行

答案 1 :(得分:0)

感谢帮助我修复了它

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
    }