Json到嵌套列表:第一个节点未捕获
Json to nested list : First node not captured
我正在使用以下javascript函数将JSON转换为html列表,但由于第一个节点没有被很好地捕获,因此脚本无法工作。要使用le NestedSortable jQuery插件,所有节点都必须封装在div标记中。此外,第一个节点(名为Flare)应该包含他的所有子节点,而不是顶部的唯一节点。Thx为您的灯光
function getList(item, $list) {
if ($.isArray(item)) {
$.each(item, function(key, value) {
getList(value, $list);
});
return;
}
if (item) {
console.log(item);
var $li = $('<li />');
if (item.name) {
$li.append($('<div>' + item.name + '</div>'));
}
if (item.children && item.children.length) {
var $sublist = $("<ol/>");
getList(item.children, $sublist)
$li.append($sublist);
}
$list.append($li)
}
}
$(function() {
var $ol = $('<ol id="sTree2" class="sTree2"></ol>');
$.getJSON('https://bitbucket.org/john2x/d3test/raw/2ce4dd5112448088fe357b8179d1088ef19524b8/d3/examples/data/flare.json', function(json) {
$.each(json, function(key, value) {
getList(value, $ol);
})
});
//getList(value.node, $ul);
$ol.appendTo("#main-lists-container");
$('.sTree2').nestedSortable({
disableNesting: 'no-nest',
forcePlaceholderSize: true,
handle: 'div',
helper: 'clone',
items: 'li',
maxLevels: 0,
opacity: .6,
placeholder: 'placeholder',
revert: 250,
tabSize: 25,
tolerance: 'pointer',
toleranceElement: '> div',
/* The magic tric: */
connectWith: '.sortable'
});
});
ol.sTree{ padding:0px; background-color:#151515; }
ol.sTree2 li, ol#sortableListsBase li { padding-left:50px; margin:5px; border:1px solid #3f3f3f; background-color:#3f3f3f; }
ol li div { padding:7px; background-color:#222; Nborder:1px solid #3f3f3f; }
ol li, ol li div { border-radius: 3px; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<script src="http://mjsarfatti.com/sandbox/nestedSortable/jquery.mjs.nestedSortable.js"></script>
<div id="main-lists-container"></div>
主要问题是在每个函数内部调用getList
。。。但是http调用返回的对象不是数组
function getList(item, $list) {
if ($.isArray(item)) {
$.each(item, function(key, value) {
getList(value, $list);
});
return;
}
if (item) {
console.log(item);
var $li = $('<li />');
if (item.name) {
$li.append($('<div>' + item.name + '</div>'));
}
if (item.children && item.children.length) {
var $sublist = $("<ol/>");
getList(item.children, $sublist)
$li.append($sublist);
}
$list.append($li)
}
}
$(function() {
var $ol = $('<ol id="sTree2" class="sTree2"></ol>');
$.getJSON('https://bitbucket.org/john2x/d3test/raw/2ce4dd5112448088fe357b8179d1088ef19524b8/d3/examples/data/flare.json', function(json) {
getList(json, $ol);
});
//getList(value.node, $ul);
$ol.appendTo("#main-lists-container");
$('.sTree2').nestedSortable({
disableNesting: 'no-nest',
forcePlaceholderSize: true,
handle: 'div',
helper: 'clone',
items: 'li',
maxLevels: 0,
opacity: .6,
placeholder: 'placeholder',
revert: 250,
tabSize: 25,
tolerance: 'pointer',
toleranceElement: '> div',
/* The magic tric: */
connectWith: '.sortable'
});
});
ol.sTree{ padding:0px; background-color:#151515; }
ol.sTree2 li, ol#sortableListsBase li { padding-left:50px; margin:5px; border:1px solid #3f3f3f; background-color:#3f3f3f; }
ol li div { padding:7px; background-color:#222; Nborder:1px solid #3f3f3f; }
ol li, ol li div { border-radius: 3px; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<script src="http://mjsarfatti.com/sandbox/nestedSortable/jquery.mjs.nestedSortable.js"></script>
<div id="main-lists-container"></div>
相关文章:
- 而循环只设置php中输入字段中的第一个值
- 错误:$injector:modulerr模块错误(我的第一个SPA应用程序)
- IE11中的第二个调用取消了第一个Fetch API调用
- Javascript XMLHttpRequest——只有第一个POST请求有效
- 使用javascript或angularjs特定过滤器搜索字符串中第一个img标记的json值
- 将OnClick函数设置为<ul>,最后一个ul是擦除第一个ul-s
- RxJS油门行为;立即获取第一个值
- 仅首先需要使用jasmine从节点添加一个文件
- Angular UI网格:如何通过第一个UI网格中的按钮使第二个UI网格可见
- 选择多个实例中的第一个
- 如何在调用下一个请求之前完成第一个Ajax Get请求
- Lodash:返回对象的第一个键,该对象的值(即数组)中有一个给定的元素(即字符串)
- 看起来第一个console.log是'It’不太对
- 与杜兰达尔合作的第一个JavaScript项目.尝试从第三方 API 获取数据
- 节点发布错误对象的第一个“属性”
- Javascript:表单验证getElementById仅返回第一个id元素
- 仅将 CSS 规则应用于
中的第一个 ,而不分配类/ID - JS在隐藏未定义的值后仅从数组中返回第一个id的值
- 为了研究节点并制作好产品,哪个技术堆栈(模块、框架)更适合第一个node.js项目
- 将节点从第二个移动到第一个