我正在对拖动开始时进行一些更改,如果放置失败,我希望能恢复它们。我将这个逻辑写在由dragend触发的函数中。这在Chrome中完美运行,但在Firefox中,“dragend”事件不会被触发。
有人能告诉我这种行为的原因吗?我正在Ubuntu上使用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(); },
ev.preventDefault();
更改为e.preventDefault();
,因为你把事件变量命名为e
。 - putvande