我有以下内容:http://jsfiddle.net/KywJT/
function dragEnter(evt) {
evt.stopPropagation();
evt.preventDefault();
$(evt.target).addClass('over');
}
function dragLeave(evt) {
evt.stopPropagation();
evt.preventDefault();
$(evt.target).removeClass('over');
}
function drop(evt) {
evt.stopPropagation();
evt.preventDefault();
$(evt.target).removeClass('over');
}
jQuery( function ( $ ) {
var $box = $( "#box" );
$box.bind("dragenter", dragEnter);
$box.bind("dragleave", dragLeave);
$box.bind("drop", drop);
});
我使用的是Chrome版本24.0.1312.52 m和最后一个jQuery(1.8.3)。 当我将文件放入框中时,浏览器不会阻止默认beaviour。 你能帮我吗?
P.S。 dragexit被弃用了吗?
答案 0 :(得分:12)
如果您希望在Google Chrome中触发放置事件,则必须先定义一个dragover侦听器,即使该函数根本不执行任何操作。我不知道为什么,这很奇怪......但是清楚地确定并且易于重现:) 昨天失去了2个小时:/希望这有帮助
答案 1 :(得分:6)
这应该为您解决问题。
jQuery( function ( $ ) {
var $box = $( "#box" );
$box.bind("dragenter", dragEnter);
$box.bind("dragleave", dragLeave);
$box.bind("drop", drop);
$(document).bind('dragover', function (e) {
e.preventDefault();
});
});
答案 2 :(得分:0)
这是一个老问题,但我使用了这个问题的答案并编写了我想要的代码:
HTML:
<div id="image_holder" ondragover="dragEnter(this,event)"></div>
jQuery的:
function dragEnter(a,evt) {
evt.stopPropagation();
evt.preventDefault();
$(evt.target).addClass('over');
$(a).bind("dragleave", dragLeave);
$(a).bind("drop", drop);
$(document).bind('dragover', function (e) {
e.stopPropagation();
e.preventDefault();
});
return false;
}
function dragLeave(evt) {
evt.stopPropagation();
evt.preventDefault();
$(evt.target).removeClass('over');
return false;
}
function drop(evt) {
evt.stopPropagation();
evt.preventDefault();
$(evt.target).removeClass('over');
}
这有权让您可以轻松地将其用于页面中的不同元素。