2012-06-25 54 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