如何将此 jQuery 代码转换为普通 Javascript?
How do I convert this jQuery code to vanilla Javascript?
我正在尝试将此 jquery 代码转换为原版 javascript。实际上,此代码正在使用此 json 数据动态构建嵌套的 ul
li
。有人可以帮我吗?
这是我的代码
var tree = [
{
name: 'Vegetables',
children: [
{
name: 'Green',
children: [
{
name: 'Broccoli',
children: [{ name: 'Broccoli-sub1' }, { name: 'Broccoli-sub2' }],
},
{ name: 'cabbage' },
{ name: 'Brussels' },
],
},
{
name: 'Orange',
children: [{ name: 'Pumpkins' }, { name: 'Carrots' }],
},
],
},
];
function recursive_tree(data, tag, child_wrapper, level) {
var html = [];
//return html array;
level = level || 0;
child_wrapper = child_wrapper != false ? child_wrapper : 'ul';
$.each(data, function (i, obj) {
var el = $('<' + tag + '>');
el.html(obj.name);
if (obj.hasOwnProperty('children')) {
var wrapper = $('<' + child_wrapper + '>');
var els = recursive_tree(obj.children, tag, child_wrapper);
wrapper.append(els);
wrapper.appendTo(el);
}
html.push(el);
});
return html;
}
var html = recursive_tree(tree, 'li', 'ul');
console.log(html);
$('#parent').append(html);
`enter code here`;
有很多方法可以做到这一点。这是一种生成内部 html
的方法
var tree = [{
"name": 'Vegetables',
"children": [{
"name": 'Green',
"children": [{
"name": 'Broccoli',
"children": [{
"name": "Broccoli-sub1"
},
{
"name": "Broccoli-sub2"
}
]
},
{
"name": "cabbage"
},
{
"name": 'Brussels'
},
]
},
{
"name": 'Orange',
"children": [{
"name": 'Pumpkins'
},
{
"name": 'Carrots'
},
]
},
]
}]
function recursive_tree(data, tag, child_wrapper, level) {
let html = [];
//return html array;
level = level || 0;
child_wrapper = !child_wrapper ? child_wrapper : 'ul';
data.forEach(obj => {
html.push(`<${tag}>${obj.name}`);
if (obj.hasOwnProperty('children')) {
html.push(`<${child_wrapper}>`);
html = html.concat(recursive_tree(obj.children, tag, child_wrapper))
html.push(`</${child_wrapper}>`);
}
html.push(`</${tag}>`);
});
return html;
}
var html = recursive_tree(tree, 'li', 'ul');
console.log(html);
const parent = document.getElementById('parent');
parent.innerHTML += html.join("");
<div id="parent"></div>
我正在尝试将此 jquery 代码转换为原版 javascript。实际上,此代码正在使用此 json 数据动态构建嵌套的 ul
li
。有人可以帮我吗?
这是我的代码
var tree = [
{
name: 'Vegetables',
children: [
{
name: 'Green',
children: [
{
name: 'Broccoli',
children: [{ name: 'Broccoli-sub1' }, { name: 'Broccoli-sub2' }],
},
{ name: 'cabbage' },
{ name: 'Brussels' },
],
},
{
name: 'Orange',
children: [{ name: 'Pumpkins' }, { name: 'Carrots' }],
},
],
},
];
function recursive_tree(data, tag, child_wrapper, level) {
var html = [];
//return html array;
level = level || 0;
child_wrapper = child_wrapper != false ? child_wrapper : 'ul';
$.each(data, function (i, obj) {
var el = $('<' + tag + '>');
el.html(obj.name);
if (obj.hasOwnProperty('children')) {
var wrapper = $('<' + child_wrapper + '>');
var els = recursive_tree(obj.children, tag, child_wrapper);
wrapper.append(els);
wrapper.appendTo(el);
}
html.push(el);
});
return html;
}
var html = recursive_tree(tree, 'li', 'ul');
console.log(html);
$('#parent').append(html);
`enter code here`;
有很多方法可以做到这一点。这是一种生成内部 html
的方法var tree = [{
"name": 'Vegetables',
"children": [{
"name": 'Green',
"children": [{
"name": 'Broccoli',
"children": [{
"name": "Broccoli-sub1"
},
{
"name": "Broccoli-sub2"
}
]
},
{
"name": "cabbage"
},
{
"name": 'Brussels'
},
]
},
{
"name": 'Orange',
"children": [{
"name": 'Pumpkins'
},
{
"name": 'Carrots'
},
]
},
]
}]
function recursive_tree(data, tag, child_wrapper, level) {
let html = [];
//return html array;
level = level || 0;
child_wrapper = !child_wrapper ? child_wrapper : 'ul';
data.forEach(obj => {
html.push(`<${tag}>${obj.name}`);
if (obj.hasOwnProperty('children')) {
html.push(`<${child_wrapper}>`);
html = html.concat(recursive_tree(obj.children, tag, child_wrapper))
html.push(`</${child_wrapper}>`);
}
html.push(`</${tag}>`);
});
return html;
}
var html = recursive_tree(tree, 'li', 'ul');
console.log(html);
const parent = document.getElementById('parent');
parent.innerHTML += html.join("");
<div id="parent"></div>