2012-04-19 8 views
2

私はjsTreeの初心者です、私はデュアルjsTreeを使いたいです。デュアルjsTreeの実装

[>>] [右JsTrree]

">>" [JsTrreeを左]:左から右jsTree

にコピー選択したノードのボタン私は左から部分ツリー階層をコピーします右jsTreeに。

  • ノードの重複はありません。私は、ユーザーがボタンの上に、その後左jsTreeから任意のノードを選択した場合は、右jsTree構造

ごとに右jsTreeにマージ左jsTreeからのみ選択したノード選択したノード

  • の子ノードをコピーしたくない
  • ( ">>")をクリックします。選択したノードからルートノードに部分ツリーをコピーします。次の「

    Root 
        -----A 
          -----A1 
           -----A1.1 
           -----A1.2 
          -----A2 
           -----`A2.1` 
           -----A2.2 
    
        -----B 
          -----B1 
          -----B2 
    
        -----C 
          -----C1 
           -----C1.1 
           -----C2.2 
    

    として

    左jsTree ------------------------------- -------------------------------------------------- -----
    は今( ">>")ボタンの後に、ユーザ選択されたノードのA2.1を想定して、[#1]を右jsTree部分木を右jsTreeに

    を表示する必要があり、次のクリック:

    Root 
        -----A 
          -----A2 
           -----`A2.1` 
    

    ルートノードが右側のjsツリーに追加されました。現在、選択したノードのみが右側のjsツリーにマージされます。

    --------------------------------------------- -----------------------------------------

    C1では、C1のみが右jsTreeにマージする必要があります。

    [#2]右jsTree構造C1左jsTreeから追加した後:

    Root 
        -----A 
          -----A2 
           -----A2.1 
        -----C 
          -----`C1` 
    

    A1は、次にA1はA1後に適切な場所に
    [#3]右jsTree構造をマージする必要があり、選択したユーザを想定左jsTreeから追加された:

    Root 
        -----A 
          -----`A1` 
          -----A2 
           -----A2.1     
        -----C 
          -----C1 
    

    は、次のように今までの私の回避策があります

    左からノードを選択した後j​​sTree選択したノードからルートノードにXMLを作成しています。 と生成されたpartial_xml_stringがクッキーに格納されます。 OnClick of( ">>")ボタン私は、partial_xml_stringの値をcookie + partial_xml_stringのクッキー値を消去して読み込んでいます。 [#1]ケースが正しく完了しました。 [#1]ケースを達成する他の良い方法はありますか?

    を使用してください。GET_PATH(ノード、id_mode)id_mode = trueの場合、ノードのID = Root.id、A.id、A2.id、A2.1場合、私は葉ノード

    へのルートからのパス(ID &名)を取得していますid_mode = falseの場合、その後名の = ルートノード

    を.ID、A、A2、A2.1

    はそれがjsTreeの右側に、このパスを設定することは可能ですか?

    はい、その後どのようにこのパスを設定する場合は? パスがすでに存在する場合は、コピーを防止する方法?そうでなければ、選択されたノードを右のjsTreeにマージします。

    --------------------------------------------- -----------------------------------------------

    私の左jsTreeが含まれている考えてみましょう*?+ * アイコンのイベントのonClickを処理する方法。我々が選択したノード上でイベントを処理することができます

    を( "select_node.jstree"、機能(イベント、データを).bind使い方+アイコンをonClickイベントを処理するために、どのようにして+アイコンで唯一のルートノード?

    インクの回答を参照してください

    私が選択したノードに子ノードのリストを追加する方法を選択したノードの子ノードを取得したいですか?

    どのように達成するために[#2]と[#3] jsTree機能を使用していますか?

    この問題で任意のヘルプや指導をいただければ幸いです。

  • +0

    私はこの質問を解決し、ここで答えを更新します:) – StackOverFlow

    答えて

    1

    [+]クリックイベントでお手伝いできます。 jquery.jstree.js(非圧縮バージョン)を変更する必要があります。 それを開き、toggle_node : function (obj)の文字列を見つけます(タブ記号がありますので、toggle_nodeを検索してください)。ここに1行追加してください。編集後にそれがなければなりません:

     toggle_node : function (obj) { 
          obj = this._get_node(obj); 
          this.__callback(obj); // these line must be added 
          if(obj.hasClass("jstree-closed")) { return this.open_node(obj); } 
          if(obj.hasClass("jstree-open")) { return this.close_node(obj);}    
         }, 
    

    今、あなたはtoggle_nodeイベントのためにいつものようにコールバックをバインドすることができます。ノードが開いたり閉じ

    $("#your_jstree").bind("toggle_node.jstree", function (e, data) { 
         is_opened = $(data.rslt).hasClass('jstree-open') ? false : true; 
         node_id = $(data.rslt).attr('id'); 
         alert('node with id='+node_id+' is '+(is_opened ? 'opening' : 'closing')+' now.');   
        }) 
    

    これらのコールバックが呼び出されます:ここでは一例です。また、open_nodeイベントを使用する場合のように、ツリーがロードされている間はこのイベントは発生しません。

    +0

    返信ありがとうございます。 [+]あなたの答えに応じて正常に動作するイベントをクリック – StackOverFlow

    関連する問題