删除事件不会阻止默认

use*_*269 5 javascript jquery drag-and-drop google-chrome jquery-events

我有以下内容: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);
});
Run Code Online (Sandbox Code Playgroud)

我使用的是Chrome版本24.0.1312.52 m和最后一个jQuery(1.8.3).当我将文件放入框中时,浏览器不会阻止默认beaviour.你能帮我么?

PS dragexit被弃用了吗?

小智 14

如果您希望在Google Chrome中触发放置事件,则必须先定义一个dragover侦听器,即使该函数根本不执行任何操作.我不知道为什么,这很奇怪......但是清楚地确定并且很容易重现:)昨天在那个sh*t上丢了2个小时:/希望这会有所帮助

  • 我希望我可以多次投票。谢谢你,谢谢你,谢谢你! (2认同)

Wol*_*olf 5

这应该为您解决问题.

jQuery( function ( $ ) {
    var $box = $( "#box" );
    $box.bind("dragenter", dragEnter);
    $box.bind("dragleave", dragLeave);
    $box.bind("drop", drop);

    $(document).bind('dragover', function (e) {
         e.preventDefault();
    });
});
Run Code Online (Sandbox Code Playgroud)