2015-04-07 57 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的查詢。