DOM 结构到数组
我正在开发“菜单设计器” - 一种在应用程序后端编辑菜单结构的工具。 我有这样的 html 代码
<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>
我想在 PHP 中得到这样的数组。
array(
2 /* top level item id */ => array( 4 /* children id */ ),
1 => array() /* or null or whatever */
);
您能给我一个建议吗?我尝试过 .sortable( 'serialize );,我尝试过使用每个(在所有 li-s 上)。没有成功 - 而且我对 javascript 数组不太熟悉:- / (所以我很不确定它应该是什么样子以及如何将它作为 JSON 对象/字符串发送到服务器?)。
非常感谢
(我正在使用 jQuery。)
I'm working on "menu designer" - a tool to edit menu structure in the app's backend.
I have html code like this
<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>
And I want to get array like this in PHP.
array(
2 /* top level item id */ => array( 4 /* children id */ ),
1 => array() /* or null or whatever */
);
Could you please give me an advice how to do it? I've tried .sortable( 'serialize );, I've tried using each (on all li-s). Nothing with success - furthermore I'm not much familiar with javascript arrays :- / (So I'm pretty unsure how it should look and how to send it to the server… as a JSON object/string?).
Thank you a lot
(I'm using jQuery.)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
结果将是对象中的对象等。如果仅存在 2 层 LI,则第二层对象将始终为空(没关系)。它的构建是递归的:3 层、4 层等,没问题。
编辑
稍微调整一下: http://jsfiddle.net/rudiedirkx/xhLwF/
编辑< /strong>
Chrome 10 中的结果:
编辑
字符串化 JSON 结果:
The result would be objects in objects in objects etc. If only 2 lays of LI exist, the second layer objects will always be empty (that's alright). It's build to be recursive though: 3 layers, 4 layers etc, no problem.
edit
Tweaked it a little: http://jsfiddle.net/rudiedirkx/xhLwF/
edit
Result in Chrome 10:
edit
Stringified JSON result:
您必须使用对象来执行此操作:
我不确定这是否是您问题的答案:)
You must use objects to do this:
I´m not sure if this is the answer to your question :)