1

这有效:

var picdrag = document.getElementById('picdrag');
picdrag.addEventListener('drop', picSelect, false);
function picSelect(e) {
    var pics = e.dataTransfer.files;
}

这不会:

$('#picdrag').on('drop', function(e) {picSelect(e);});
function picSelect(e) {
    var pics = e.dataTransfer.files;
}

因为它报错'e.dataTransfer is undefined'。当我不知道为什么某事有效或无效时,我讨厌它。这是特定于 drop 事件的,就像 jQuery 以不同的方式处理它一样。

4

2 回答 2

4

你可以试试:

var pics = e.originalEvent.dataTransfer.files;

文档

某些事件可能具有特定于它们的属性。这些可以作为 event.originalEvent 对象的属性访问。要使所有事件对象中的特殊属性可用,可以将它们添加到 jQuery.event.props 数组中。不推荐这样做,因为它会增加 jQuery 传递的每个事件的开销。

还有一个应该感兴趣的例子:

// add the dataTransfer property for use with the native `drop` event  
// to capture information about files dropped into the browser window
jQuery.event.props.push("dataTransfer");
于 2012-09-01T09:42:05.330 回答
2
$('#picdrag').on('drop', picSelect);
var picSelect = function(e) {
    var pics = e.dataTransfer.files;
};
于 2012-09-01T09:42:15.730 回答