Tre*_*nch 39 javascript jquery drag-and-drop
我正在尝试从桌面浏览器窗口实现拖放文件.我使用jQuery将三个事件附加到HTML元素,如下面的代码所示:
$("html").on("dragover", function() {
$(this).addClass('dragging');
});
$("html").on("dragleave", function() {
$(this).removeClass('dragging');
});
$("html").on("drop", function(event) {
event.preventDefault();
event.stopPropagation();
alert("Dropped!");
});
Run Code Online (Sandbox Code Playgroud)
'dragover'和'dragleave'事件工作得很好,当我将文件拖到删除它上时,如果我再次拖出文件,则会在整个页面周围显示插入边框.
但是,'drop'事件似乎根本没有触发,删除的文件只是在浏览器窗口中打开.
有谁知道为什么这个事件没有解雇?
顺便说一句,我在最新版本的Chrome中使用jQuery 1.10.2进行测试.
Chr*_*und 98
您需要取消所有活动
$("html").on("dragover", function(event) {
event.preventDefault();
event.stopPropagation();
$(this).addClass('dragging');
});
$("html").on("dragleave", function(event) {
event.preventDefault();
event.stopPropagation();
$(this).removeClass('dragging');
});
$("html").on("drop", function(event) {
event.preventDefault();
event.stopPropagation();
alert("Dropped!");
});
Run Code Online (Sandbox Code Playgroud)
Jim*_*Blu 12
除了Christian的解决方案,这可以缩短为:
$('#my-dropzone')
// crucial for the 'drop' event to fire
.on('dragover', false)
.on('drop', function (e) {
// do something
return false;
});
Run Code Online (Sandbox Code Playgroud)