请注意$(文件).ready(function(){})
的附加范围原始代码是:
var files = [];
$(document).ready(function(){
$("input").change(function(){
files = this.files;
});
});
$("#upload-btn").click(function(){
var fd = new FormData();
for (var i = 0; i < files.length; i++) {
fd.append("file", files[i]);
}
$.ajax({
url: "/upload/",
method: "POST",
data: fd,
contentType: false,
processData: false,
cache: false,
success: function(data){
console.log(data);
}
});
});
更改的代码是:
var files = [];
$(document).ready(function(){
$("input").change(function(){
files = this.files;
});
$("#upload-btn").click(function(){
var fd = new FormData();
for (var i = 0; i < files.length; i++) {
fd.append("file", files[i]);
}
$.ajax({
url: "/upload/",
method: "POST",
data: fd,
contentType: false,
processData: false,
cache: false,
success: function(data){
console.log(data);
}
});
});
});
该点是$(document).ready(function(){})的包含范围 我不知道有什么不同
答案 0 :(得分:0)
你是对的,但是为什么一个事件绑定在ready事件处理程序中而另一个不在。
通常,脚本位于页面的头部,两个事件绑定都需要在ready事件处理程序中才能工作。当您知道该元素已经存在时,您需要运行事件绑定代码。
如果在元素之后的页面中包含代码,那么您不需要ready事件来知道元素存在。
有一种情况下原始代码是有意义的。如果它包含在按钮下方但在输入上方,那就是它。然后你知道按钮已经存在,但你需要ready事件来等待输入存在。