jquery的解释一下每条代码的意思

 $(function () { 
  $( "input:file" ).on('change', function (e) {
      $('#fileContentList').empty();
      for (var i = 0; i < e.target.files.length; i++) {
        var file = e.target.files[i];
        if (file) {         
          var r = new FileReader();
          r.file = file;
          r.readAsDataURL(file);    
          r.onload = function(e) {  
            var contents = e.target.result; 
            var thisfile = this.file;
             $('#fileContentList').append("<span>文件名: " + thisfile.name + "<br>文件类型: " + thisfile.type 
                    + "<br>文件大小: " + thisfile.size + " bytes<br><img src='"+contents+"'></span>");
              }
        } else {
          alert("选择文件失败");
        }
      }
 });

})

格式化一下代码不会么?这是文件选择器,如果文件选择按钮发生了变化,就去找文件,找到输出文件信息,找不到弹窗显示选择失败。

  $(function () {
        $("input:file").on('change', function (e) {//file控件选中文件后触发的事件
            $('#fileContentList').empty();//清空fileContentList容器内容
            for (var i = 0; i < e.target.files.length; i++) {//遍历file中选中的所有文件
                var file = e.target.files[i];//获取文件
                if (file) {//存在,这个判断没什么必要
                    //下面是html5的FileReader对象,用来读取文件的相关信息,具体看连接
                    var r = new FileReader();
                    r.file = file;
                    r.readAsDataURL(file);
                    r.onload = function (e) {
                        var contents = e.target.result;
                        var thisfile = this.file;
                        $('#fileContentList').append("<span>文件名: " + thisfile.name + "<br>文件类型: " + thisfile.type
                               + "<br>文件大小: " + thisfile.size + " bytes<br><img src='" + contents + "'></span>");
                    }
                } else {
                    alert("选择文件失败");
                }
            }
        });

    })
```[HTML5 FileReader对象API](http://www.w3dev.cn/article/20130515/HTML5-FileReader-API.aspx "")