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'です。なぜうまくいくのか、うまくいかないのかわからないときは嫌いです。これは、jQueryが異なる方法で処理するように、dropイベントに固有です。

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 に答える