JSTREE,精确移动位置

发布于 2024-10-17 17:28:50 字数 338 浏览 7 评论 0原文

我想在树视图内拖放树节点时显示明确的工具提示。

例如:“节点 1 将在节点 2 之前/之后/内部移动”

从 move_node 回调参数中,我们可以获取位置(“之前/之后/内部”),但不能从 check_move 回调中获取(也不能从prepare_move 中获取)。 拖放时应显示工具提示,因此 move_node 为时已晚。

当将外部对象拖放到树视图时,同样的问题,来自 dnd 插件的 Drag_check 回调没有有关位置的信息(我们只知道目标节点,但不知道它是在之前、之后还是内部)。 在这种情况下,即使对于 Drag_finish 回调,我们也没有信息。

有人可以帮我解决这个问题吗?

I want to show an explicit tooltip while drag-drop tree node inside treeview.

example: "Node 1 will be moved before/after/inside Node 2"

From move_node callback argument, we can get the position ("before/after/inside") but not from check_move callback (neither from prepare_move).
Tooltip should be displayed while drag-droping, so move_node is too late.

The same problem when drag-drop external object to treeview, the drag_check callback from dnd plugin has no information about the position (we just know the target node but not if it is before, after or inside).
In that case, even for drag_finish callback we don't have the information.

Is there somebody who can help me solving this issue ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

澉约 2024-10-24 17:28:50

我刚刚测试了这个,它在prepare_move上对我来说工作正常...

.bind("prepare_move.jstree",function(event, data) {
        console.log("o : " + data.rslt.o.attr("id"));
        console.log("r : " + data.rslt.r.attr("id"));
        console.log("p : " + data.rslt.p);
 })

记录的内容

o : item_3
r : item_2
p : inside

这就是我正在使用 JSTree v1.0RC2

I just tested this and its working fine for me on prepare_move ...

.bind("prepare_move.jstree",function(event, data) {
        console.log("o : " + data.rslt.o.attr("id"));
        console.log("r : " + data.rslt.r.attr("id"));
        console.log("p : " + data.rslt.p);
 })

this is what is logged

o : item_3
r : item_2
p : inside

I am using JSTree v1.0RC2

短暂陪伴 2024-10-24 17:28:50

这里我用 jQuery 插件 jDialog 来实现它(或者你可以用一个简单的 jAlert 函数替换它):

.bind("move_node.jstree", function (e, data) {
  var id = data.rslt.o.attr("id").replace("node_","");
  var name = data.inst.get_text(data.rslt.obj);

  jConfirm('Moving node name:' + name, 'dialog title'), function(answer) {
    if (answer == true){           
      $.post("/js_trees/"+ id,
        {
          "_method" : "put",
          "operation" : "moving_my_node",
          "id" : data.rslt.o.attr("id").replace("node_",""),
          "ref" : data.rslt.np.attr("id").replace("node_",""),
          "position" : data.rslt.cp,
          "title" : data.rslt.name,
          "copy" : data.rslt.cy ? 1 : 0
        },
        function (r) {
          if(!r.status) {
            $.jstree.rollback(data.rlbk);
          } else {
            $(data.rslt.oc).attr("id", "node_" + r.id);
            if(data.rslt.cy && oc.children("UL").length) {
              data.inst.refresh(data.rslt.oc);
            }
          }
        }
      );        
    }else{
      $.jstree.rollback(data.rlbk);
    }
  });
})

Here what I use to do it with jQuery plugin jDialog (or you can replace it with a simple jAlert function):

.bind("move_node.jstree", function (e, data) {
  var id = data.rslt.o.attr("id").replace("node_","");
  var name = data.inst.get_text(data.rslt.obj);

  jConfirm('Moving node name:' + name, 'dialog title'), function(answer) {
    if (answer == true){           
      $.post("/js_trees/"+ id,
        {
          "_method" : "put",
          "operation" : "moving_my_node",
          "id" : data.rslt.o.attr("id").replace("node_",""),
          "ref" : data.rslt.np.attr("id").replace("node_",""),
          "position" : data.rslt.cp,
          "title" : data.rslt.name,
          "copy" : data.rslt.cy ? 1 : 0
        },
        function (r) {
          if(!r.status) {
            $.jstree.rollback(data.rlbk);
          } else {
            $(data.rslt.oc).attr("id", "node_" + r.id);
            if(data.rslt.cy && oc.children("UL").length) {
              data.inst.refresh(data.rslt.oc);
            }
          }
        }
      );        
    }else{
      $.jstree.rollback(data.rlbk);
    }
  });
})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文