2013-06-30 87 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; 
      } 
     } 

我知道這是一個老問題,但我找了一個較新的問題/答案,並沒有發現它。

希望它有助於其他人會有相同的問題:)