Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript DOM结构到数组_Javascript_Jquery_Arrays_Json - Fatal编程技术网

Javascript DOM结构到数组

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>

我正在开发“菜单设计器”——一个在应用程序后端编辑菜单结构的工具。 我有这样的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>
你能告诉我怎么做吗?我试过了。可排序('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": {}}}