【问题标题】:Sorting nodes with getting all childs from node parent(get array of childs)从节点父节点获取所有子节点对节点进行排序(获取子节点数组)
【发布时间】:2015-04-07 13:58:34
【问题描述】:

移动节点时需要重新排列菜单。我认为 js 脚本应该使用 ajax 发送父节点的新顺序。但我不明白如何获得一系列孩子。 例如:

列表

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

当我在子节点 3 之后移动子节点 1 时

更改列表

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

以及发送到服务器端脚本的数组:

数组(4,3,5)

当我移动节点时如何获取子数组?

【问题讨论】:

  • 你是如何“移动”这些节点的,你能展示处理这个的 JavaScript/jQuery 以及相关的 HTML 吗?您应该发布足够的代码,以便我们可以重现您的问题(请参阅:“MCVE”)。您想在 JavaScript(如问题标签所示)或 PHP(如您自己发布的答案所建议的那样)中获取节点数组(可能是他们的ids?)?
  • 我将这些与 jquery 的 jstree 插件一起移动,正如问题标签所建议的那样,我想在 JavaScript 中获取节点。我没有找到答案,我正在使用 PHP 语言,但我更喜欢在 JavaScript 中获取这个数组。
  • 谢谢,但您需要显示实际使用的代码; html 和 JavaScript,如果使用插件,则显示您对该插件的调用。但是如果问题中没有代码,我们将无法提供代码来回答问题:请阅读 MCVE 页面。然后改进您的问题并帮助我们为您提供帮助。
  • 感谢您的建议,下次我会记住的。我解决了这个问题,我考虑完成。

标签: javascript jquery-plugins jstree


【解决方案1】:

好的,我解决了这个问题。我不知道仅使用 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 查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多