1、公式zTreeをダウンロードしてください:http://www.treejs.cn/v3/api.php
2、導入jquery.ztree.all.min.js
関連JSの導入、これはjQueryのプラグインに基づいていることに注意してください
3、設定値を設定します
VaRの設定値= { データ:{ simpleData:{ イネーブル:真、 IDKEY:" ID " 、 PIDKEY:" PARENTID " 、 rootPIdを: - 1 }、 キー:{ URL:" nourl " 、 名称:" フィールド名" } }、 小切手:{ nocheckInherit:真 }、 コールバック:{ //ツリーのクリックイベント のonClick:zTreeOnClick、 //は、イベントの終了ドラッグ onDropを:zTreeOnDrop }、 // オープンドラッグ 編集:{ ドラッグ:{ // Ctrlキー+ドラッグ左クリックした後、コピー機能を開き isCopyを:trueに、 // オープンモバイル機能、マウスの左ボタンのドラッグクリック isMove:trueにする }、 // 編集を開く 可能:trueに、 // 削除閉じる :showRemoveBtn 偽、 // 閉じる変更名前 showRenameBtn:偽を } };
ドラッグ機能の後に4、
関数zTreeOnDrop(イベント、treeId、のTreeNodeは、targetNode、MoveType、isCopy) treeIdは:上記のHTMLは、ID記載されている のTreeNodeを:ノードの選択されたセットをドラッグは、複数選択することができ targetNode:ドラッグターゲットノードがすべてのTreeNodeを設定するには、この機能を使用することができIDはtargetNodeある[「PARENTID」]、次いでzTreeリロード MoveTypeをモバイル型、PREV移動、ダウン次、シフトインナー、あまり有用感じる 真、偽の動きをコピーし、コピーするかどうか:isCopyを
5.詳細なドラッグ機能
// ztreeの組格納するグローバル変数 VARのztreeListを; // グローバル変数、パラメータによってコピーが便利、好ましくはグローバル変数渡されたときに最大のIDを格納するために、使用される VaRのcopyNodeMaxIndexを; // ドラッグ 機能zTreeOnDrop(イベント、treeId、のTreeNode、targetNode、MoveType、isCopyがある){ // コピー IF (isCopyがある){ ため(VAR I = 0;私はztreeList.lengthを<; Iは++ ){ // 反復ztreeセットのルートノードが検出された、記憶され得ます最大IDは、グローバル変数を設定します。注:この最大値Idを取ることが便利であるが、行に配置される IF( "0" == ztreeList [I] [ 'ID' ]){ copyNodeMaxIndex = ztreeList [I] [ 'maxIndex' ]; VARの TEMP =ztreeList [I]; //はIDとPARENTID変化させながら、設定ztreeレプリケート・サイトのセットに呼び出し copyNodesToArray(のTreeNode、targetNode [「ID」]、trueにする); // グローバル変数バックルートノードIDの最大ストレージはデータベースに格納されます TEMP [ 'maxIndex'] = copyNodeMaxIndex; // ルート交換 ztreeList.splice(Iは1 ,. TEMP); } } } 他{ // 動きは、標的に対する[ない]親の子ノードを含むノードの選択されたセットを設定しますノードID のための(I 中のTreeNode){ ため(J でztreeList){ IF(のTreeNode [I] [ 'ID'] == ztreeList [J] [ 'ID' ]){ ztreeList [J] [ 'PARENTID'] = targetNode [ 'ID' ]; BREAK ; } } } } // リロードzTree $ .fn.zTree.init($( "#zTree" )、ztreeList、設定); } / * * * IDとPARENTID変更しながら、グローバル変数zTreeセットを設定するためのコピーノード * @paramノードは *をPARENTIDを@param *フラグに@param * / 関数copyNodesToArray(ノード、フラグにPARENTID、){ // ノードのサイクルセット のための(I 中のノード){ VAR=ノードノード[I]; VARの子供= node.children; copyNodeMaxIndex ++ ; ノード[ 'ID'] = copyNodeMaxIndex; ノード[ 'PARENTID'] = PARENTID; IF (フラグに){ ノード[ 'フィールド名'] =ノード[ 「フィールド名」] +「[コピー]」; } // ここでは子ノードの特定のセットとして定義され、またはコピーを複製 node.children = 不定; //は単にコピーし、サブノードを除く、グローバルztreeセットにノードを追加しますノード自体 ztreeList.push(ノード); IF(2 == isOnlyChildren(子供)){ //図2は、それが収集グローバルztreeに再帰的であれば、同様にノード子供に加えて、外部返されるノードのセットを表し copyNodesToArray(子供、ノード[「ID」]、偽に); } そう IF(1 ==。isOnlyChildren(子供)) { //は、その外側の子ノードに加えて表すノードのコレクションを返し、次に通過する直系子ノードのセット、及びPARENTID IDとグローバルztreeにコレクションを提供 するため(J における{子供) copyNodeMaxIndex ++を、 子供[J] [ 'ID'] = copyNodeMaxIndex; 子供[J] [ 'PARENTID']ノード= [ 'ID' ]; ztreeList.push(子供[J]); } } //次に、利用可能な治療法は存在しない、存在しない場合0のノードセットを返す、上記ノード自体が処理されている } } / * * *ノードのセットがどのように多くの子レベルのノードを決定されます。これは、セットが存在しない場合0のノードは、そのノードの集合は、ノードの組に加えて、2つのリターン自体をそれらの外部に加えて子ノードを表していないだけでなく、子ノード有し返し * @param子供 *数@Returns {} * / 関数isOnlyChildren(子供たち){ IF(子供=不定&& children.length> 0!){ ため(I における)子供{ VAR Children1 = 子供[I] .children; IF!(=不定&& children1.length Children1> 0 ){ 戻り 2 。 } } リターン 1 } 戻り 0 。 }
6、効果
モバイル1
モバイル2
結果
テストのコピー
1つのコピー
コピー2
コピー結果
コピーサブノードの複数のレベルをも得ることができます