从现有的超文本标记语言
本文关键字:ul 超文本标记语言 | 更新日期: 2023-09-27 18:15:39
我有一个jQuery插件,显示基于<ul>
层次结构的组织结构图。
这将允许我的用户拖放员工,一旦拖放,就会触发一个事件,告诉我DOM已经更改。在这一点上,我想读取<ul>
,并建立一个JSON类,这样我就可以把它发送到我的服务器(asp.net MVC)进行进一步处理。
是否有库可以为我做这些,如果没有,我该如何自己去做呢?
html的一个例子:
<ul id="org" style="display:none">
<li>
Food
<ul>
<li>Beer</li>
<li>Vegetables
<ul>
<li>Pumpkin</li>
<li><a href="http://tquila.com" target="_blank">Aubergine</a></li>
</ul>
</li>
<li>Bread</li>
<li>Chocolate
<ul>
<li>Topdeck</li>
<li>Reese's Cups</li>
</ul>
</li>
</ul>
</li>
</ul>
您需要遍历dom节点并创建适当的json,如下所示:
var getTreeData = function(parentNode){
var nodes = [];
var $parentNode = $(parentNode);
$parentNode.children('li').each(function(index, li){
var nodeData = {};
var nodeText = $(li).contents().filter(function() {
return this.nodeType == 3;
}).text();
nodeData.text = nodeText.trim().replace(''n', '');
if($(li).children('ul').length>0){
nodeData.children = getTreeData($(li).children('ul'))
}
nodes.push(nodeData);
});
return nodes;
}
现在通过父树ul调用getTreeData
函数,如下所示:
var treeData = getTreeData($('#org'));
下面是完整的小提琴示例:https://jsfiddle.net/rxwy4zqw/