Я пытаюсь сохранить список в json
объект с помощью цикла через него с помощью рекурсивной функции, так это то, что я сделал до сих пор:
Мой список:список Сохранить уль в объект JSON
<ul id="Menu">
<li>Menu
<ul>
<li>Test 1</li>
<li>Test 2
<ul>
<li>Sub test 2/1</li>
<li>Sub test 2/2</li>
<li>Sub test 2/3</li>
</ul>
</li>
<li>Test 3</li>
<li>Test 4</li>
</ul>
</li>
<li>Menu2</li>
</ul>
Мой сценарий:
<script>
jQuery(document).ready(function(){
item = {};
buildMenu($('#Menu'), item);
menu.push(item);
console.log(JSON.stringify(menu));
});
var menu = [];
function buildMenu(ul, item){
var children = [];
ul.find('li').each(function(){
var current = $(this);
if(current.find('ul').length > 0){
var newItem = {};
buildMenu(current.find('ul'), newItem);
children.push(newItem);
}else{
children.push(current.text());
}
});
var txt = $(this).text();
console.log('pushing into: '+txt);
item[txt] = children;
}
</script>
Я хочу, чтобы сохранить каждое меню и его дети в нем как объекты JSON и отправить его на php, но у меня неправильный вывод:
[{"MenuTest 1Test 2Sub test 2/1Sub test 2/2Sub test 2/3Test 3Test 4Menu2":[{"Test 1Test 2Sub test 2/1Sub test 2/2Sub test 2/3Test 3Test 4":["Test 1",{"Sub test 2/1Sub test 2/2Sub test 2/3":["Sub test 2/1","Sub test 2/2","Sub test 2/3"]},"Sub test 2/1","Sub test 2/2","Sub test 2/3","Test 3","Test 4"]},"Test 1",{"Sub test 2/1Sub test 2/2Sub test 2/3":["Sub test 2/1","Sub test 2/2","Sub test 2/3"]},"Sub test 2/1","Sub test 2/2","Sub test 2/3","Test 3","Test 4","Menu2"]}]
Что не так с моей функцией?
find ('li') получает не только прямые дочерние элементы li, но и вложенные элементы li. –
Просто интересно. DOM является сериализуемым (неожиданным, неожиданным) HTML. Зачем вам нужно сохранять его как JSON? –
@YuryTarabanko жаль, что я не буду следовать за тобой, что ты имеешь в виду?. – SlimenTN