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 回答