2011-07-21 11 views
0

jstree内のノードを移動しようとしています(これは json_dataからビルドされています)。before.jstreeがjqueryのノードのドラッグアンドドロップ中に2回呼び出されました

ノードを移動すると、「あなたは 移動してもよろしいですか?」という確認を表示したいですか?私は次のコードを使ってこれを行います。

$("#demo2").bind("before.jstree", function (e, data) { 

     if(data.func == "move_node" && data.args[1] == false && data.plugin == "core") 
     { 
      if (confirm('Are you sure you want to move?') === false) { 
       e.stopImmediatePropagation(); 
       return false; 
      } 
     } 

});

しかし、この "あなたは移動してもよろしいですか?"確認メッセージが2回表示されます。

これを修正する方法は分かりますか?最新のjstree、jquery commitを使用しています。crrm pluginを使用していません.dndプラグインのみを使用しています。

お知らせください。

よろしく、ご返信クリスのため ペリ


感謝。私はこれを試みたが、まだ動作していない。アラートはここでも2回表示されます。ご意見をお聞かせください。 $( "#demo2")。bind( "before.jstree"、function(e、data){try {var flag = 1; var nodeMoved = data.args [0] .o;} catch(e){flag = 0;}もし([1] ==偽& & data.plugin data.func == "move_node" & & data.args == "コア" & &フラグ== 1){//警告(data.func + ( "あなたは本当に移動しますか?")){e.stopImmediatePropagation(); falseを返す;}}});

答えて

0

私はこれを自分で実行していませんが、私はjstreeユーザグループの問題について読んだことがあります。現時点では、唯一の解決策は、グローバルなjavascriptフラグを作成することだと私は信じています。ユーザーがyes/noを指定すると、余分なポップアップを防ぐためにキーをオフにできます。もちろん、後で移動確認のプロンプトを表示しないように、フラグをクリアする必要があります。

また、私はbefore.jstreeの複数の呼び出しで、data.func == "move_node"のうち1つだけがdata.args [0] .oを定義していることに気付きました(_get_moveを参照してください。 jstreeデータで頻繁に使用されるオブジェクト)。私はこの質問は万年古いです知っ

if(data.func == "move_node" && 
    data.args[1] == false && 
    data.plugin == "core" && 
    data.args[0].o != undefined) 
    { 
     // your work goes here... 
    } 
+0

返信ありがとうございます。私はこれを試みたが、まだ動作していない。アラートはここでも2回表示されます。ご意見をお聞かせください。 $( "#1 DEMO2")結合( "before.jstree" 機能(例えば、データ){ \t \t試み{ \t \t VARフラグ= 1; \t \t VAR nodeMoved = data.args [0]。o; \t \t} \t \tキャッチ(E){\t \t \t \tフラグ= 0。 \t \t} \t IF(data.func == "move_node" && data.args [1] ==偽&& data.plugin == "コア" &&フラグ== 1){ \t \t //警告( data.func + "---" + data.args [1] + "---" + data.plugin); \t if(!確かに移動しますか?)){ \t e.stopImmediatePropagation(); \t falseを返します。 \t} \t} \t}); – Peri

0

:だから、グローバルフラグ(私はこれをプレイしましたが、生産メーリングリストに入れていない)の代替として、このような何かにあなたのコードを修正することができます私はちょうどここで同じ問題に遭遇しました。私は実際に問題が何かを知っていませんが、 "crrm"プラグインへの参照を追加すると解決します。 "コア"が "get_move"と "check_move"関数を複製したという事実によって引き起こされたと思われるかもしれませんが、私はもっとそれを調べていませんでした...

関連する問題