Jstree,检查 drop 是否在节点下方、内部或上方
Jstree, check if drop is bellow, inside or above the node
我已经知道如何从被拖节点和目标节点获取ID了。但是我需要知道那个下降是在节点波纹管内还是在节点上方。我该怎么做?
divTree.jstree({
'core': {
'check_callback': true,
'data': data,
'themes': {
'icons': hasIcons,
'dots': hasDots
}
},
'plugins': ['themes', 'ui', 'search', 'contextmenu','dnd'],
'search': {
'case_sensitive': false,
'show_only_matches': true
},
'contextmenu': {
'items': contextMenu != null ? contextMenu : ''
}
})
这是我的 JStree
$(document).on("dnd_stop.vakata", eventDrop);
我是这样称呼掉落事件的
const eventDrop = (data) => {
let elementID = data.data.nodes[0]
let targetID = data.event.target.parentNode.id;
}
这是我获取 enodes ID 的地方
我想找到类似的东西:
const eventDrop = (data) => {
let elementID = data.data.nodes[0]
let targetID = data.event.target.parentNode.id;
let elementPosition = data.event.indexPos; (Where it could say if its inside, bellow, our above)}
好的,在深入了解 Jstree 代码后,我想我找到了答案。
所以基本上我所做的是每次鼠标在树内移动时,检查鼠标朝向悬停(或最近)元素的位置是在下方,上方还是内部。
我把活动改成了这样:
const evt_adminmodules_areaTree_OnDrop = (e, data) => {
if (data.event.type == 'mouseup') {
let elementID = data.data.nodes[0]
let targetID = data.event.target.parentNode.id;
}
else if (data.event.type == 'mousemove') {
let ref = $(data.event.target).closest('.jstree-anchor');
let off = ref.offset();
if (off) {
let rel = data.event.pageY - off.top;
let h = ref.outerHeight();
if (rel < h / 3) _dropPosition = 'up';
else if (rel > h - h / 3) _dropPosition = 'bot';
else _dropPosition = 'mid';
}
}
}
至少这个问题解决了:D!
谢谢
我已经知道如何从被拖节点和目标节点获取ID了。但是我需要知道那个下降是在节点波纹管内还是在节点上方。我该怎么做?
divTree.jstree({
'core': {
'check_callback': true,
'data': data,
'themes': {
'icons': hasIcons,
'dots': hasDots
}
},
'plugins': ['themes', 'ui', 'search', 'contextmenu','dnd'],
'search': {
'case_sensitive': false,
'show_only_matches': true
},
'contextmenu': {
'items': contextMenu != null ? contextMenu : ''
}
})
这是我的 JStree
$(document).on("dnd_stop.vakata", eventDrop);
我是这样称呼掉落事件的
const eventDrop = (data) => {
let elementID = data.data.nodes[0]
let targetID = data.event.target.parentNode.id;
}
这是我获取 enodes ID 的地方
我想找到类似的东西:
const eventDrop = (data) => {
let elementID = data.data.nodes[0]
let targetID = data.event.target.parentNode.id;
let elementPosition = data.event.indexPos; (Where it could say if its inside, bellow, our above)}
好的,在深入了解 Jstree 代码后,我想我找到了答案。 所以基本上我所做的是每次鼠标在树内移动时,检查鼠标朝向悬停(或最近)元素的位置是在下方,上方还是内部。
我把活动改成了这样:
const evt_adminmodules_areaTree_OnDrop = (e, data) => {
if (data.event.type == 'mouseup') {
let elementID = data.data.nodes[0]
let targetID = data.event.target.parentNode.id;
}
else if (data.event.type == 'mousemove') {
let ref = $(data.event.target).closest('.jstree-anchor');
let off = ref.offset();
if (off) {
let rel = data.event.pageY - off.top;
let h = ref.outerHeight();
if (rel < h / 3) _dropPosition = 'up';
else if (rel > h - h / 3) _dropPosition = 'bot';
else _dropPosition = 'mid';
}
}
}
至少这个问题解决了:D! 谢谢