1

jstree と jquery-ui v1.10.1 を使用します。ツリーでコンテキスト メニューを使用し、ノードを削除する前に確認ダイアログ (jquery-ui ダイアログなど) を表示します。「before.jstree」イベントでダイアログを使用していますが、ダイアログボックスを表示すると、オプションが選択される前に(はいまたはいいえ)、選択されたノードが削除されます。この問題を解決するには?

.bind("before.jstree", function(e, data) {
                  if (data.func === "remove") {
                      if (!confirmRemove()) {
                          e.stopImmediatePropagation();
                          return false;
                      }
                  }
              }

function confirmRemove() {
return  $confirmDialog.dialog('open');

}

4

2 に答える 2

1

私は 2.1.0 バージョンを使用していますが、この機能には別の解決策があります。

あなたがしなければならないことは、関数を check_callback オプションに追加することです。このような:

        $("#your_tree").jstree({
        "core": {
            "check_callback": function (operation, node, node_parent, node_position, more) {
                // operation can be 'create_node', 'rename_node', 'delete_node', 'move_node', 'copy_node' or 'edit'
                // in case of 'rename_node' node_position is filled with the new node name
                if (operation === 'delete_node') {
                    if (!confirmRemove()) {
                        return false;
                    }
                }
                return true;
            }
        }

これが古い質問であることは知っていますが、より最近の質問/回答を探しましたが、見つかりませんでした。

同じ質問を持つ他の人々に役立つことを願っています:)

于 2017-05-29T07:40:21.400 に答える
0

JQuery-UI-Dialog は非同期です。これを呼び出すと、イベント ハンドラは実行を停止して待機するのではなく、続行してノードを削除します。

JavaScript-Dialog confirm() を試してください。これは同期的であり、ユーザーがダイアログを確認または拒否するまで実行を停止します。

于 2013-07-10T00:10:42.980 に答える