我使用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');
}
答案 0 :(得分:0)
JQuery-UI-Dialog是异步的;如果你调用它,你的事件处理程序不会停止执行并等待,但继续并删除节点。
尝试使用JavaScript-Dialog confirm(),因为这是同步的,并且在用户确认或拒绝对话之前停止进一步执行。
答案 1 :(得分: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;
}
}
我知道这是一个老问题,但我找了一个更近期的问题/答案,但没有找到它。
希望对有同样问题的其他人有所帮助:)