2016-06-24 20 views
0

複数のドラッグアンドドロップ領域を作成しようとしています。 「ドロップゾーン」クラスのリスナーを追加しようとしています(このクラスのすべての要素の場合は)。クラスの複数のイベントリスナー

var dropZone = document.getElementById('some_area'); // ok 
// var dropZone = document.getElementByClassName('drop-zone'); // not working 

dropZone.addEventListener('dragover', function(e) { 
    e.stopPropagation(); 
    e.preventDefault(); 
    e.dataTransfer.dropEffect = 'copy'; 
}); 

dropZone.addEventListener('drop', function(e) { 
    var target_img = $(this).find('img'); 
    e.stopPropagation(); 
    e.preventDefault(); 
    var files = e.dataTransfer.files; // Array of all files 
    for (var i=0, file; file=files[i]; i++) { 
     if (file.type.match(/image.*/)) { 
      var reader = new FileReader(); 
      reader.onload = function(e2) { // finished reading file data. 
       var img = document.createElement('img'); 
       img.src= e2.target.result; 
       target_img.attr('src',e2.target.result); 
       target_img.addClass('full-preview'); 
      } 
      reader.readAsDataURL(file); // start reading the file data. 
} } }); 

答えて

2

特定のクラスを持つすべての要素を照会する必要があります。

// Returns a list of the elements within the document 
// that match the specified 'drop-zone' class. 
var dropZones = document.querySelectorAll('.drop-zone'); 


for (var i = 0; i < dropZones.length; i++) { 
    // Add the event listeners for each element of the list. 
    dropZones[i].addEventListener('dragover', function (e) { 
    // ... 
    }); 

dropZones[i].addEventListener('drop', function (e) { 
    // ... 
}); 
} 
+0

ありがとうございました! – Lucfia

関連する問題