我们使用 dojo dnd 包进行拖放。有一个类 Moveable 可用于移动节点元素,代码如下所示
var dropSource = new Moveable(DIV_ID);
并且可以使用以下行跟踪移动项目(使用 onMove 事件)
on(dropSource, "Move",some_function);
是否可以使用 dojo/dnd/Source 实现相同的目标?
我们使用 dojo dnd 包进行拖放。有一个类 Moveable 可用于移动节点元素,代码如下所示
var dropSource = new Moveable(DIV_ID);
并且可以使用以下行跟踪移动项目(使用 onMove 事件)
on(dropSource, "Move",some_function);
是否可以使用 dojo/dnd/Source 实现相同的目标?
我不认为有类似的事件。但是,有一个事件可以用来检查拖动动作是否开始(onDndStart
),还有一个事件可以用来检查它是否停止,可以取消或停止(onMouseUp
)。
要检查它是否在移动,您可以尝试使用该onMouseMove
事件。不好的是它总是在将鼠标移到dojo/dnd/Source
. 因此,要使其正常工作,您必须检查用户是否正在拖动元素。仅当onMouseMove
事件位于onDndStart
和onMouseUp
事件之间时才会发生这种情况。
举个例子:
var isDragging = false;
on(mySource, "DndStart", function() {
isDragging = true;
});
on(mySource, "MouseUp", function() {
isDragging = false;
});
on(mySource, "MouseMove", function() {
if (isDragging) {
// Now an element is being moved, I think
}
});
我不知道这是否涵盖所有情况,并且我认为您实际上无法检索正在拖动的项目。我制作了一个JSfiddle,它在上面的示例中使用这些函数来扩展dojo/dnd/Source
以支持onMove
事件。
我不认为这是最简洁的解决方案,但如果我真的不喜欢 Dojo 中的一个模块(DojoX 除外),那么它就是其中的dojo/dnd
一部分。