我正在尝试在jstree中移动节点(这是从一个构建的 json_data)。
当我移动节点时,我想显示“你是吗? 你确定要移动吗?“。我使用以下代码执行此操作。
$("#demo2").bind("before.jstree", function (e, data) {
if(data.func == "move_node" && data.args[1] == false && data.plugin == "core")
{
if (confirm('Are you sure you want to move?') === false) {
e.stopImmediatePropagation();
return false;
}
}
});
但是这个“你确定要移动吗?”确认消息显示两次。
我可以知道如何解决这个问题吗?我正在使用最新的jstree,jquery commit.And我没有使用crrm插件。我只使用dnd插件。
请告知。
此致 围
谢谢你的回复克里斯。我试过这个,但仍然无法正常工作。此处的警报也会出现两次。请指教。 $(“#demo2”)。bind(“before.jstree”,function(e,data){try {var flag = 1; var nodeMoved = data.args [0] .o;} catch(e){flag = 0;} if(data.func ==“move_node”&& data.args [1] == false&& data.plugin ==“core”&& flag == 1){// alert(data.func +“---”+ data.args [1] +“---”+ data.plugin); if(!confirm(“你确定要移动吗?”)){e。 stopImmediatePropagation(); return false;}}});
答案 0 :(得分:0)
我自己没有遇到过这个问题,但我已经在jstree用户组上看到了这个问题。我相信在这个时候唯一的解决方案是创建一个全局的javascript标志。一旦用户指示是/否,您可以关闭它以防止额外的弹出窗口。当然,您需要在之后清除标记,这样您就不会禁止将来的移动确认提示。
另外,我注意到在对before.jstree的多次调用中,data.func ==“move_node”中只有一个定义了data.args [0] .o(参见_get_move jstree数据中经常使用的对象的描述)。所以你可以修改你的代码到这样的东西作为全局标志的替代品(我玩过这个但没有投入生产YMMV):
if(data.func == "move_node" &&
data.args[1] == false &&
data.plugin == "core" &&
data.args[0].o != undefined)
{
// your work goes here...
}
答案 1 :(得分:0)
我知道这个问题已有百万年历史,但我在这里遇到了同样的问题。我真的不知道问题是什么,但我发现添加对“crrm”插件的引用可以解决它。 我想这可能是因为“核心”复制了“get_move”和“check_move”函数,但我没有进一步研究它......