为什么不$('document').load()开火?

4th*_*ace -3 jquery

我用.load()替换了.ready():

$('document').load(function(){
  alert('test');
});
Run Code Online (Sandbox Code Playgroud)

但没有任何反应.回到ready()并且它工作正常.文档中没有任何内容.它只是一个空白的HTML文件.

我究竟做错了什么?

zzz*_*Bov 5

$(document)不是$('document')在选择文档时因为没有<document>元素.

此外,document不会触发加载事件.window触发加载事件.你应该使用$(window).load(...).

之所以$('document').ready()工作是因为.ready()实际上并没有使用任何选择器上下文,而API应该一直都是$.ready(...).避免$(document).ready()并坚持使用别名速记版本:

jQuery(function ($) {
    ...
});
Run Code Online (Sandbox Code Playgroud)

另外,请注意,在文档准备好document.ready 之后绑定到仍然会触发回调.在窗口加载window.onload 绑定到不会触发回调.

$(document).ready(function () {
  alert('document selector works');
});

$('document').ready(function () {
  alert('invalid selector works');
});

$().ready(function () {
  alert('no selector works');
});

$(window).load(function () {
  alert('window load works!');
  
  $(window).load(function () {
    alert("load has already fired, this doesn't work");
  });
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

  • @ 4thSpace'检查这里业余'.真?至少尊重他的声誉. (2认同)
  • @ 4thSpace,[如果您打算使用jsfiddle,请不要忘记检查您的小提琴设置](http://i.imgur.com/fFTb04S.png). (2认同)