Javascript DOM结构到数组
我正在开发“菜单设计器”——一个在应用程序后端编辑菜单结构的工具。 我有这样的html代码Javascript DOM结构到数组,javascript,jquery,arrays,json,Javascript,Jquery,Arrays,Json,我正在开发“菜单设计器”——一个在应用程序后端编辑菜单结构的工具。 我有这样的html代码 <ul id="menu-designer-control"> <li id="mi-2"> <h3>Submenu header</h3> <ul> <li id="mi-4"><h4>Hello world - article</h4>
<ul id="menu-designer-control">
<li id="mi-2">
<h3>Submenu header</h3>
<ul>
<li id="mi-4"><h4>Hello world - article</h4></li>
<li><!-- Drop here --></li>
</ul>
</li>
<li id="mi-1">
<h3>Hello world - article</h3>
<ul>
<li><!-- Drop here --></li>
</ul>
</li>
</ul>
你能告诉我怎么做吗?我试过了。可排序('serialize);,我已经试过(在所有的li-s上)使用每一个。没什么成功的-而且我对javascript数组不太熟悉:-/(所以我很不确定它应该是什么样子,以及如何将它作为JSON对象/字符串发送到服务器?)
多谢各位
(我正在使用jQuery。)必须使用对象来执行此操作:
var dom = {
"2":[4]
,
"1":[]
};
我不确定这是否是你问题的答案:)
结果将是对象中的对象中的对象等。如果仅存在两层LI,则第二层对象将始终为空(没关系)。它的构建是递归的:3层,4层等等,没问题
编辑稍微调整一下: 编辑
导致铬10:
Object
1: Object (empty)
2: Object >
4: Object (empty)
编辑字符串化JSON结果:
{"1": {}, "2": {"4": {}}}
你想要只使用JQuery的解决方案,还是只使用非JQuery的解决方案就足够了?)我认为Ondrej想要解析这段代码并在输出时得到那个数组。我不知道这意味着什么。。。无需检查节点类型:jQuery查询仅
HTMLElement
s。子菜单标题也将由代码解析。您必须只筛选li或ul的.children()
查询仅直接子项。UL
的直接子级只能是LI
,而不是H3
。在JSFIDLE上试试。谢谢,解决了我的问题。我想用测试id和json stringify写下edit,但您已经更新了:o)然后在PHP中我只使用了json_decode($structure,true);现在我有了关联数组。再次感谢你,有一只虫子!我无法解释为什么,但当我在Opera中使用它时,它并不关心项目的顺序。我已经通过愚蠢的尝试解决了它…它是“.substr(3)”。我删除了它,添加了$id=(int)preg_replace(“^mi-([0-9]+)~”、“$1”、$id);(无论如何,这是更好的)在PHP中处理程序,现在它工作良好。
Object
1: Object (empty)
2: Object >
4: Object (empty)
{"1": {}, "2": {"4": {}}}