2013-06-30 66 views
0

我使用jstree和jquery-ui v1.10.1。我在树上使用上下文菜单,并且希望在删除节点之前显示确认对话框(如jquery-ui对话框)。 我在“.jstree”事件中使用对话框,但是当显示对话框时,在选择选项(是或否)之前,所选节点被删除。 如何解决这个问题?在删除jstree节点之前显示确认对话框

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

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

}

回答

0

了jQuery-UI-对话框是异步的;如果您调用它,您的事件处理程序不会停止执行并等待,但会继续并删除该节点。

尝试使用JavaScript-Dialog confirm(),因为这是同步的,并且在用户确认或拒绝该对话框之前停止进一步的执行。

0

我正在使用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; 
      } 
     } 

我知道这是一个老问题,但我找了一个较新的问题/答案,并没有发现它。

希望它有助于其他人会有相同的问题:)