2012-03-23 49 views
1

該場景如下:我有兩個jstrees,第一個樹包含需要將其中一些節點移動到第二個jstree的節點。到目前爲止,我已經設法移動它們,但沒有規則。但是我需要做的是: 1.讓只有一個節點成爲整棵樹的根 2.檢查樹中是否已經存在節點不允許移動,但我無法確定瞭解如何做到這一點。 這是第二樹的代碼(一個移動到):如何檢查jstree中是否存在節點

 $('#SecondTree').jstree({ 
      "json_data": { 
       "data": data 
      }, 
      "themes": { 
       "theme": "default", 
       "dots": false, 
       "icons": false 
      }, 
      "dnd": { 

      }, 
      "crrm": { 
       "move": { 
        "always_copy": "multitree" 
        } 
       }, 

      "plugins": ["json_data", "themes", "ui", "dnd", "crrm"] 

     }).bind("move_node.jstree", function (e, data) { 
      if (data.rslt.r.attr("id") == data.rslt.o.attr("id")) { 
        return false; 
      } 


     }); 
    } 

感謝你在先進

+0

什麼是jstree? – Christoph 2012-03-23 15:51:27

+0

這是一個jQuery樹 – HRI 2012-03-23 15:54:02

回答

1

不知道如果我全明白了你的問題,但是,特別是,我可以幫你這個部分:

「[...],以檢查是否節點的樹已經存在,不要讓移動」您必須使用

,因爲你已經是嘗試, crrm plugin。我剛剛回答了一個pretty similar question,舉個例子,也許你也想看看它。

在你的情況,因爲你需要在另一棵樹來檢查節點的存在(或不),你可以做這樣的事情:

"crrm": { 
    "move": { 
     "check_move": function(m) { 
     return (m.ot === m.rt) || !m.rt.get_container().find("li[id="+m.o[0].id+"]").length; 
     } 
    } 
} 

首先,我們檢查,如果我們移動內部的節點同一棵樹,總是允許這種情況(重新排序節點或其他)。如果你不需要,就改變它。

然後我們檢查節點是否存在:
m.o是被移動的節點。您將在您要放置節點的樹中尋找它。

m.rt.get_container()會返回一個jQuery DOM結構,所以我們只需要使用.find(),它將返回<li>元素的數組,ID發現,是在什麼情況下空被發現。

如果我們返回TRUE(我們在同一棵樹中移動,或者數組爲空,也就是說,在第二棵樹中找不到節點),則允許移動,否則不允許移動。

我希望它有幫助!

+0

是的謝謝你,這是我需要檢查節點是否存在,但我需要知道,如果我可以使所有節點只有一個根第一個移動或現有的節點。 – HRI 2012-03-26 06:01:52

相關問題