我正在学习有关如何使用 ajax 上传文件的教程,并且遇到了这行代码。
var fileToUpload = $('input[type="file"]')[0].files[0];
// I change it to this. And now its undefined.
var fileToUpload = $('input[type="file"]').files[0];
我真的很困惑选择输入类型文件与选择输入类型文本有何不同。使用 .val()
是否与使用 [0].files[0]
相同?
最佳答案
两者是不同的,因为第一个将从普通的节点对象
调用.file[0]
,而第二个则调用.file[0 ]
包装器 jquery 对象
。由于 jquery 对象不包含任何像文件这样的属性,第二个对象会抛出类似 Uncaught TypeError: Cannot read property '0' of undefined(…)
同时.val()
将返回节点对象的value
属性,并且可以通过jquery对象而不是普通节点对象调用它。
如果您想检查 Jquery 可用的所有可枚举属性
,那么只需在控制台中执行以下命令即可。
var x = $();
Object.keys(x.__proto__)
关于jquery - 在 jquery 中选择输入类型=文件如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35679189/