我猜有点空白,dndSource有几种不同的实现。但是对于在鼠标悬停/dnddrop 期间调用的事件/检查函数,有一些事情需要了解。
一种方法是为checkAcceptance(source, nodes)
您可能拥有的任何目标进行设置。然后保留当前拖动的节点的引用。但是,由于多个容器具有动态内容,因此变得很棘手。
设置您的源,同时覆盖checkAcceptance
并使用已知的(可能是全局的)变量来跟踪。
var lastReference = null;
var target = dojo.dnd.Source(node, {
checkAcceptance(source, nodes) : function() {
// this is called when 'nodes' are attempted dropped - on mouseover
lastReference = source.getItem(nodes[0].id)
// returning boolean here will either green-light or deny your drop
// use fallback (default) behavior like so:
return this.inhertied(arguments);
}
});
最好的方法可能就是这样 - 你手头有目标和源加上节点,但是你需要找出哪个是在其中查找节点的正确堆栈。我相信它与事件同时发布(onDrop
)你已经在使用:
dojo.subscribe("/dnd/drop", function(source, nodes, copy, target) {
// figure out your source container id and target dropzone id
// do stuff with nodes
var itemId = nodes[0].id
}
通过 dojo.subscribe 和事件可用的机制/主题在此处列出
http://dojotoolkit.org/reference-guide/1.7/dojo/dnd.html#manager