我有一个无序列表和li
下的一些ul
元素。我无法获得ul
和li
值。我尝试了以下几种资源:
http://jsfiddle.net/mohammadwali/tkhb5/
how-do-i-convert-the-items-of-an-li-into-a-json-object-using-jquery
jquery-tree-traversal-nested-unordered-list-elements-to-json
我的代码如下所示:
我的预期输出如下:
[{
"id": "1",
"category": "Parking",
"subcategory": [
"Street Parking",
"Bus Parking"
]
}]
如何实现JSON?
答案 0 :(得分:1)
试试这个:
请注意,我已经通过向data-name
个元素添加li
来更改了html。
var mylist = [];
$(".nameList > li").each(function() {
mylist.push({});
var self = mylist[mylist.length-1];
self.subcategory = [];
self.id = $(this).attr("value");
self.category = $(this).attr("data-name");
$(this).find("ul > li").each(function(){
self.subcategory.push($(this).html());
});
console.log(self);
});
这是一个小提琴: http://jsfiddle.net/tkhb5/262/
答案 1 :(得分:1)
如果您无法触摸HTML,请在此处选择...
var myList = [];
$('ul.nameList > li').each(function() {
myList.push({
"id": $(this).val(),
"category": $(this).clone().children('ul.subcatList').remove().end().text().trim(),
"subcategory": $(this).find('ul.subcatList li').toArray().map(function(value) { return value.innerHTML; })
});
});
...但如果可以,我会将类别名称放在某个元素中,以便更容易选择它。你可以用......
<li value="1"><span class="cattitle">Parking</span>
<ul class="subcatList">
<li>Street Parking</li>
<li>Bus Parking</li>
<li>Complementary Parking</li>
</ul>
</li>
<li value="2"><span class="cattitle">Business Services</span>
<ul class="subcatList">
<li>Business Center</li>
<li>A/V Capabilities</li>
<li>Video Conferencing</li>
</ul>
</li>
........
...所以你可以简化jQuery ......
var myList = [];
$('ul.nameList > li').each(function() {
myList.push({
"id": $(this).val(),
"category": $(this).children('span.classtitle').text(),
"subcategory": $(this).find('ul.subcatList li').toArray().map(function(value) { return value.innerHTML; })
});
});
我希望它有所帮助