2012-06-25 56 views
3

我有一个jsTree,我希望它的一些节点是可移动的。根节点及其直接子节点不能移动。jsTree禁用移动一些节点

我正在使用crrm,它的工作方式与预期的一样,但它仍然允许我拖动所有节点,即使是那些不能放在任何位置的节点(紧接在root下面)。我不希望它们是可拖动的,即用户根本无法拿起它们。

回答

0

类似的问题问,看看我的回答是: dnd, how to restrict dropping to certain node types?

需要有对crrm.move.check_move功能某种类型的嗅觉测试。你的情况这将是根和第一个孩子。

+0

相似,但不是我在这里问的。 crrm check_move对我的问题没有用处。它只会阻止我拖放拖动的节点。我不希望用户能够拖动无法在任何地方丢弃的节点。 – Ali

0

我想你需要的是drag_check

"dnd" : { 

     "drop_target" : false, 


     "drag_check" : function(data) 

     { 
      if(data.r.attr("id") == ...) 
        return false; 
      //if you want to enable drag for certain nodes return following 
      return { 
        after : true, 
        before : false, 
        inside : false 
       } 
      } 
+0

我相信只有在拖放外部对象时才会使用“dnd”回调。问题是关于树内部的节点。 –

10

在当前版本jsTree的(3.0.8),你这样做:

使用is_draggable功能与插件类型沿控制可以拖动的内容。如果你想看到我使用的图标包括bootstrap的图形样式表。这里的代码假设你已经在你的HTML中有一个div和jstree列表。如果有人无法理解上面的代码,我会发布一个plunkr。

编辑 - 防止跌落做到这一点:

"core" : { 
        "check_callback" : function(operation, node, node_parent, node_position, more) { 
         if (operation == 'move_node') { 
          console.log(node_parent); 
          if (node_parent.type == 'MY-DROPPABLE-TYPE') { 
           return true 
          } else 
           return false; 
         } 
        } 
       }, 

使用check_callback功能来筛选可放开的类型。使用node_parent来获取可放置的。

+1

这是一个巨大的帮助。谢谢。 – DavidHyogo

+1

感谢您添加防止下降可能,实际上是我正在寻找。 –

+0

这应该被接受。 – Keutelvocht