Tim*_*ott 5 jquery jquery-ui droppable draggable
期望的行为:
用户将项目拖动到树上.将鼠标悬停在一个封闭的节点上时,该节点将展开显示子节点.此时,用户可以继续拖动到子节点并放下它们中的任何节点.
这工作正常.我使用droppables的"over"选项来扩展节点并使子节点可以删除.
但我需要添加更多功能.首先,我为draggables添加了一个帮助器.仍然工作正常.然后我将draggables和droppables放入两个不同的容器(div).此时,帮助程序不会拖出容器.解决方案是在draggables上设置"appendTo:'body'".好的......好吧,不是很好.
现在,子节点在当前拖动操作期间不可删除.用户必须释放当前拖动并重新划分到所需的子节点.如果我删除appendTo选项,问题就会消失,但是帮助程序不会在视觉上移动到droppable容器中.
有什么方法可以"唤醒"这些新的droppables,使它们立即可以放弃?
小智 6
这就是我几乎解决了同样问题的方法.在我的情况下,当我在拖动拖动时切换节点时,通过ajax加载子项,然后将它们初始化为droppables.然后我必须这样做:
ui.draggable.draggable('option', 'refreshPositions', true);
var tempFunc = function() {
if (ui.draggable) {
ui.draggable.off('drag', tempFunc);
setTimeout(function() {
ui.draggable.draggable('option', 'refreshPositions', false);
}, 100);
}
};
ui.draggable.on('drag', tempFunc);
Run Code Online (Sandbox Code Playgroud)
这使得draggable具有足够长的refreshPositions选项,true以便新的droppables加入当前拖动.您也可以refreshPositions选择true在整个拖动期间,但它会给我不想要的性能损失.
我没有办法以另一种方式做到这一点.如果有一种方法可以在拖动过程中调用只是为了刷新位置,那将是最好的,但事实并非如此.