HTML5 FileList和JQuery各自

tho*_*hom 6 javascript each jquery html5 file

我抓住文件列表([ http://www.w3.org/TR/FileAPI/#dfn-filelist]),然后我想使用JQuery的每个函数.

var file_list = $(this).attr('files');
/* Code goes here */
file_list.each(function()
{
/* Code goes here */
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Uncaught TypeError: Object #<FileList> has no method 'each'
Run Code Online (Sandbox Code Playgroud)

任何的想法?谢谢.

Mar*_*sen 10

这是因为$(this).attr('files');只返回普通的DOM文件列表,而不是jQuery对象.

要么你需要以老式的方式循环它:

for(var i=0,file;file=file_list[i];i++) {
 //do your thing
}
Run Code Online (Sandbox Code Playgroud)

或者你可以使用$ .each:

$.each(file_list,function(idx,elm){
     //do your thing
});
Run Code Online (Sandbox Code Playgroud)

请注意,$ .each比plain for循环慢,并且在这种情况下为您提供了极少的便利,所以我坚持使用for循环.

  • @thom:你没有 - 文件列表不是DOM元素,而是javascript构造,jQuery无法以有意义的方式包装它.这就像尝试包装一个regExp对象一样. (2认同)