【问题标题】:JStree: Track drag & drop in a treeJStree:在树中跟踪拖放
【发布时间】:2011-12-30 20:34:38
【问题描述】:

我正在(尝试)将 JStree 用于类别/子类别树。 这花了相当长的时间,但我设法用从数据库中检索到的 JSON 数据创建了一棵树(使用 PHP 查询和构建 JSON 对象)。

现在我希望能够跟踪拖放操作。 即:从主类别 a 中的子类别 x 被拖到主类别 b。 我需要记录这一点以在操作后更改数据库。 我想我需要“check_move”或“drop_finish”函数。 drop-finish 根本不起作用,事件没有被触发。这似乎是因为我的节点没有 jstree-drop 类,但我似乎无法正确插入该类:它不起作用。

check_move 函数在传递其他子类别时会继续触发,因此会产生大量不需要的数据。

我的(测试)JSON 数据:

[
{
    "metadata": {
        "id": "1"
    },
    "data": "Geluid",
    "children": [
        {
            "data": "Speakers",
            "attr": {
                "href": ""
            },
            "metadata": {
                "id": "1"
            }
        },
        {
            "data": "Versterkers",
            "attr": {
                "href": ""
            },
            "metadata": {
                "id": "3"
            }
        }
    ]
},
{
    "metadata": {
        "id": "2"
    },
    "data": "Licht",
    "children": [
        {
            "data": "Parren",
            "attr": {
                "href": ""
            },
            "metadata": {
                "id": "2"
            }
        }
    ]
}
]

我的 JStree 代码:

$(function () {
  $("#Create").click(function () {
    $("#tree").jstree("create");
    });     
  $("#Rename").click(function () {
    $("#tree").jstree("rename");
  });
  $("#Remove").click(function () {
    $("#tree").jstree("remove");
    });


    $("#tree").jstree({
        "dnd" : {
          "drop_finish" : function (data) {
         alert ("Drag OK");
          //alert("Dragged: " + data.o.attr('id') + " to " + data.r.attr('id'));         
        }
      },
      "themes" : {
            "theme" : "classic",
            "dots" : true,
            "icons" : false
        },
      "json_data" : {
            "ajax" : {
                "url" : "get_category_tree.php"
            }
        },
        "plugins" : [ "themes", "json_data", "ui", "crrm", "checkbox", "dnd" ]
    })
    .bind("select_node.jstree", function (e, data) {
      var req = new ZaxasRequest();
      req.getContent("category_content.php?id=" + data.rslt.obj.data('id') +"", "category_content");
    })
});

基本上,我想获得 ID。不要担心主类别和子类别 id 可能相同的事实,我稍后会解决这个问题;) 任何人都可以指出正确的方向吗?

【问题讨论】:

  • 类似问题的答案可在此处找到。 [点击这里][1][1]:stackoverflow.com/questions/6110708/…
  • [由于我没有足够的代表发表评论,因此我将其作为新答案发布。] 当前版本的 jstree 中不存在 CRRM 插件。请参阅my answer 的相关问题以找到 3.3.7 版中拖放的工作示例。

标签: jstree


【解决方案1】:

绑定到移动事件并使用 CRRM 插件 ... 稍后我将发布一些代码示例.. JSTree CRRM

【讨论】:

  • 截至2016年,您提供的链接没有CRRM插件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多