HTML5 FileList 和 JQuery 各自
我抓取文件列表([http://www.w3.org/TR/FileAPI /#dfn-filelist]),然后我想使用 JQuery 的 every 函数。
var file_list = $(this).attr('files');
/* Code goes here */
file_list.each(function()
{
/* Code goes here */
我收到以下错误:
Uncaught TypeError: Object #<FileList> has no method 'each'
有什么想法吗?谢谢。
I grab the filelist ([http://www.w3.org/TR/FileAPI/#dfn-filelist]) and then I want to use JQuery's each function.
var file_list = $(this).attr('files');
/* Code goes here */
file_list.each(function()
{
/* Code goes here */
I get the following error:
Uncaught TypeError: Object #<FileList> has no method 'each'
Any idea? Thank you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
2011年5月,jQuery 1.6发布,它改变了
.attr()
的行为,您应该使用.prop()
来访问文件
> 文件输入的属性。这里有一些处理 FileList 对象的其他方法。
如果有人想做自己的研究:
In 2011 May, jQuery 1.6 was released which changed the behavior of
.attr()
, you should use.prop()
instead to access thefiles
property of a file input.Here are some additional ways to deal with a FileList object.
In case anyone wants to do their own research:
这是因为
$(this).attr('files');
仅返回纯 DOM 文件列表,而不是 jQuery 对象。要么你需要用老式的方式循环它:
要么你可以使用 $.each:
请注意 $.each 比普通的 for 循环慢,在这种情况下给你带来的便利很少,所以我会坚持使用for 循环。
It is because
$(this).attr('files');
just returns the plain DOM file list, and not a jQuery object.Either you need to loop over it the old fashioned way:
or you could use $.each:
Be aware that $.each is slower than the plain for loop, and in this case gives you very little convenience, so i'd stick with the for loop.