【发布时间】:2013-08-06 09:56:58
【问题描述】:
我正在对拖动开始进行一些更改,并希望在放置失败时恢复它们。我在 dragend 触发的函数中编写了这个逻辑。这在 Chrome 中完美运行,但在 firefox 中不会触发“Dragend”事件。
谁能告诉我一些关于这种行为的事情?我在 ubantu 上使用 Firefox 22.0。
代码如下
$(".view-controller").on("dragover", that.dragOverMain);
$(".view-controller").on("dragenter", that.dragEnterMain);
$(".view-controller").on("dragexit dragleave", that.dragExitMain);
$(".view-controller").on("dragend", that.dragEndMain);
$(".view-controller").on("drop", that.dropMain);
$(".view-controller").children().on("dragstart", function(e) {
that.dragStartChild(e);
});
$(".view-controller").children().on("dragend", function(e) {
that.dragEndMain(e);
});
dragStartChild: function(e) { console.log('dragStartChild'); },
dragEndMain: function(e) { console.log('dragEndMain'); e.preventDefault(); },
dropMain: function(e) { console.log('dropMain'); e.preventDefault(); },
dragExitMain: function(e) { console.log('dragExitMain'); e.preventDefault(); },
dragEnterMain: function(e) { console.log('dragEnterMain'); e.preventDefault(); },
dragOverMain: function(e) { console.log('dragOverMain'); e.preventDefault(); },
【问题讨论】:
-
也许:stackoverflow.com/a/11531582/1414562 BTW,为什么不提供您的相关代码?一个jsfiddle会很好......
-
感谢 Roasted,但我已经应用了 prevent Default 并且它没有调用,这可能是我在此编辑代码的其他内容
-
还注意到 esc 键取消了 mozila 中的拖动,但不能在 chrome 中进行
-
至少将您的
ev.preventDefault();更改为e.preventDefault();,因为您将事件变量命名为e。 -
这是一个伪代码,因为在常规函数中我采用了一个不同的变量 ev,它保存了 mozila 中的事件和其他中的 e.orignalevent
标签: javascript jquery html drag-and-drop