这两个代码有什么不同

时间:2015-10-05 10:02:26

标签: javascript jquery

请注意$(文件).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(){})的包含范围 我不知道有什么不同

1 个答案:

答案 0 :(得分:0)

你是对的,但是为什么一个事件绑定在ready事件处理程序中而另一个不在。

通常,脚本位于页面的头部,两个事件绑定都需要在ready事件处理程序中才能工作。当您知道该元素已经存在时,您需要运行事件绑定代码。

如果在元素之后的页面中包含代码,那么您不需要ready事件来知道元素存在。

有一种情况下原始代码是有意义的。如果它包含在按钮下方但在输入上方,那就是它。然后你知道按钮已经存在,但你需要ready事件来等待输入存在。