2015-04-07 51 views
0

当我移动节点时,需要重新排列菜单。我认为js脚本应该用父节点中的ajax新节点顺序发送。但我不明白如何得到一批孩子。 例如:使用从父节点获取所有子节点的排序节点(获取子节点数组)

列表

  • 测试节点[ID = 1]
  • 测试节点2 [ID = 2]
    • 子节点1 [ID = 5]
    • 子节点2 [id = 4]
    • 子节点3 [id = 3]
  • 测试节点3 [ID = 6]

并且当我移动子节点1子节点3

更改列表

  • 测试节点之后[ID = 1]
  • 测试节点2 [id = 2]
    • 子节点2 [id = 4]
    • 子节点3 [ID = 3]
    • 子节点1 [ID = 5]
  • 测试节点3 [ID = 6]

AND阵列将其sended至服务器端脚本:

阵列(4,3,5)

如何获得孩子的进行阵列当我移动节点?

+0

你如何“移动”这些节点,你能展示处理这个的JavaScript/jQuery以及相关的HTML吗?您应该发布足够的代码,以便我们可以重现您的问题(请参阅:“[MCVE](http://stackoverflow.com/help/mcve)”)。你想在JavaScript中(如问题的标签所示)或PHP(如你自己发布的答案所暗示的)来获取节点数组(大概是他们的'id's?)? –

+0

我将这些jstree插件移动到jquery中,如问题的标签所示,并且我想要在JavaScript中获得节点。我没有找到答案,我使用它的PHP语言,但我更愿意在JavaScript中获得这个数组。 – Jackenmen

+0

谢谢,但您需要显示使用的实际代码; html和JavaScript,如果使用插件,则显示您对该插件的调用。但是如果没有代码,我们就不能提供代码来回答问题:请阅读MCVE页面。然后改进你的问题并帮助我们来帮助你。 –

回答

0

好的,我解决了这个问题。我不知道只有jstree API是否可行,但我编写的代码在相同的基础上工作。我用这个PHP,但用这种语言编程。 这是PHP代码:

$id=intval($_REQUEST['id']); 
$parent=intval($_REQUEST['parent']); 
$position=intval($_REQUEST['position']); 
$r=dbAll('select `id` from `menu` where `parent_id`='.$parent.' order by `order`'); 
$array=array(); 
foreach($r as $v) 
    $array[]=$v['id']; 
if(($key = array_search($id, $array)) !== false) { 
    unset($array[$key]); 
} 
$insert=array($id); 
array_splice($array, $position, 0, $insert); 
$array=array_values($array); 
$i=1; 
foreach($array as $val){ 
    dbQuery('update `menu` set `order`='.$i.',`parent_id`='.$parent.' where `id`='.$val); 
    $i++; 
} 

功能DBALL()是用来获取所有匹配的记录和功能的DBQuery()用于发送mysqli的查询。