javascript - 一个类的多个事件监听器

标签 javascript jquery drag-and-drop event-listener

我正在尝试创建多个拖放区域。我正在尝试为“drop-zone”类添加监听器(对于此类的每个元素)。

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.
}   }   });

最佳答案

您需要查询具有特定类的所有元素。

// 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) {
   // ...
 });
}

关于javascript - 一个类的多个事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38004890/

相关文章:

javascript - Jquery Tabs 跳跃和高度

php - 关闭YouTube视频的自动播放

jquery - 如何使用 Dropzone.js 在预览中使用实际图像而不是缩略图

javascript - Angular 7导入所有但忽略一个文件

javascript - 如何在 dimple.js 中用不同的颜色为不同的数据集着色

javascript - Angular ng-option 过滤器返回除

javascript - document.getElementById 与 jQuery $()

jquery - 拼接 jQuery 元素数组

javascript - 使用 React testutils 模拟拖放不起作用

jquery - jQuery拖放上传插件