我用.load()替换了.ready():
$('document').load(function(){
alert('test');
});
但没有任何反应。回到ready(),它工作正常。文档中没有任何内容。它只是一个空白的HTML文件。
我做错了什么?
答案 0 :(得分:5)
$(document)
不是$('document')
,因为没有<document>
元素。
此外,document
不会触发加载事件。 window
触发加载事件。您应该使用$(window).load(...)
。
$('document').ready()
之所以有效,是因为.ready()
实际上并没有使用任何选择器上下文,而API应始终为$.ready(...)
。避免$(document).ready()
并坚持使用别名速记版本:
jQuery(function ($) {
...
});
另外,请注意,文档准备好后绑定到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");
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 1 :(得分:4)
在HTML页面中没有document
标记,您必须将其称为
$(document).load(function() { ... });
但是,文档元素没有加载事件,如果你希望你的函数在完全加载页面时触发,你应该使用
$(window).load(function() { ... }); // use "window" instead of "document"
相反,如果你需要在DOM准备就绪时触发,只需使用
$(function() { ... });