Javascript jQuery将值从无限ul级别推送到JSON
我试图用JSON从无限的孩子(例如ul>ul>ul>ul..)推送所有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'),
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元素