2012-03-23 14 views
1

シナリオは次のとおりです。私は2つのjstreeを持っています。最初のツリーには、それらのうちのいくつかを2番目のjstreeに移動する必要があるノードが含まれています。 これまで私はそれを動かすことができましたが、ルールはありませんでした。しかし、私がする必要があるのは次のとおりです。 1.ツリー全体のルートになるノードを1つだけにします。 2.ノードがツリー内にすでに存在するかどうかを確認して、移動を許可しません。 これをどうやって行うのか。 これは、第二の木(へ移動するための1)のコードです:ノードが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

+0

それはjqueryツリーです – HRI

答えて

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()は、.find()を使用する必要があり、IDで見つかった<li>要素の配列を返します。何も見つからない場合は空です。

TRUE(同じツリー内を移動している、または配列が空である、つまり2番目のツリーにノードが見つからない)場合は移動が許可され、それ以外の場合は許可されません。

私はそれが助けてくれることを願っています!

+0

ありがとうございました。ノードが存在するかどうかを確認する必要がありましたが、最初のノードが移動したルートまたは既存のノードが1つしかないようにすべてのノードを作成できるかどうかを確認する必要があります。 – HRI