我希望在树视图中拖放树节点时显示明确的工具提示。
示例:“节点1将在节点2之前/之后/之内移动”
从move_node回调参数,我们可以获得位置(“之前/之后/内部”),但不能从check_move回调(不是来自prepare_move)获取。 拖放时应显示工具提示,因此move_node为时已晚。
将外部对象拖放到树视图时,同样的问题,来自dnd插件的drag_check回调没有关于位置的信息(我们只知道目标节点,但不知道它是在之前,之后还是之内)。 在这种情况下,即使是drag_finish回调,我们也没有这些信息。
有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
我刚刚测试了这个,并且它在prepare_move上工作正常......
.bind("prepare_move.jstree",function(event, data) {
console.log("o : " + data.rslt.o.attr("id"));
console.log("r : " + data.rslt.r.attr("id"));
console.log("p : " + data.rslt.p);
})
这是记录的内容
o : item_3
r : item_2
p : inside
我正在使用JSTree v1.0RC2
答案 1 :(得分:0)
这里我用jQuery插件jDialog来做这件事(或者你可以用一个简单的jAlert函数替换它):
.bind("move_node.jstree", function (e, data) {
var id = data.rslt.o.attr("id").replace("node_","");
var name = data.inst.get_text(data.rslt.obj);
jConfirm('Moving node name:' + name, 'dialog title'), function(answer) {
if (answer == true){
$.post("/js_trees/"+ id,
{
"_method" : "put",
"operation" : "moving_my_node",
"id" : data.rslt.o.attr("id").replace("node_",""),
"ref" : data.rslt.np.attr("id").replace("node_",""),
"position" : data.rslt.cp,
"title" : data.rslt.name,
"copy" : data.rslt.cy ? 1 : 0
},
function (r) {
if(!r.status) {
$.jstree.rollback(data.rlbk);
} else {
$(data.rslt.oc).attr("id", "node_" + r.id);
if(data.rslt.cy && oc.children("UL").length) {
data.inst.refresh(data.rslt.oc);
}
}
}
);
}else{
$.jstree.rollback(data.rlbk);
}
});
})