html5's file api example with jquery? html5's file api example with jquery? jquery jquery

html5's file api example with jquery?


Gidon's description solves the problem. Here is a fully coded example in case someone else is looking to solve this problem and wants more detail.

// Bindings to HTML; replace these with your components.var $dropArea = $('#dropArea');var $picsHolder = $('#picsHolder');// Attach our drag and drop handlers.$dropArea.bind({  dragover: function() {    $(this).addClass('hover');    return false;  },  dragend: function() {    $(this).removeClass('hover');    return false;  },  drop: function(e) {    e = e || window.event;    e.preventDefault();    // jQuery wraps the originalEvent, so we try to detect that here...    e = e.originalEvent || e;    // Using e.files with fallback because e.dataTransfer is immutable and can't be overridden in Polyfills (http://sandbox.knarly.com/js/dropfiles/).                var files = (e.files || e.dataTransfer.files);    var $img = $('<img src="" class="uploadPic" title="" alt="" />');    for (var i = 0; i < files.length; i++) {      (function(i) {        // Loop through our files with a closure so each of our FileReader's are isolated.        var reader = new FileReader();        reader.onload = function(event) {          var newImg = $img.clone().attr({            src: event.target.result,            title: (files[i].name),            alt: (files[i].name)          });          // Resize large images...          if (newImg.size() > 480) {            newImg.width(480);          }          $picsHolder.append(newImg);        };        reader.readAsDataURL(files[i]);      })(i);    }    return false;  }});
#dropArea {  border: 10px dashed;  border-radius: 10px;  border-color: gray;  width: 200px;  height: 200px;}#dropArea:hover {  border-color: black;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><div id="picsHolder"></div><div id="dropArea"></div>


The solution is simple.

  1. Lose the on prefix (that's why no events were thrown)
  2. this. => $(this). (that's why when events were thrown nothing happened, it gave an error).

With me it worked.