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

时间:2015-06-19 14:32:48

标签: jquery

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

$('document').load(function(){
  alert('test');
});

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

我做错了什么?

2 个答案:

答案 0 :(得分:5)

选择文档时

$(document)不是$('document'),因为没有<document>元素。

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

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

jQuery(function ($) {
    ...
});

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

&#13;
&#13;
$(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");
  });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:4)

在HTML页面中没有document 标记,您必须将其称为

$(document).load(function() { ... });

但是,文档元素没有加载事件,如果你希望你的函数在完全加载页面时触发,你应该使用

$(window).load(function() { ... }); // use "window" instead of "document"

相反,如果你需要在DOM准备就绪时触发,只需使用

$(function() { ... });