我搜索了整个互联网,发现的是:
方法on在jQuery 1.7版中引入
但是我用下面的代码检查了我的版本
if (typeof jQuery != 'undefined') {
// jQuery is loaded => print the version
alert(jQuery.fn.jquery);
}
它说加载的是1.12.4版本。我不能使用$(window).on('load',function(){})
并且$('body')
为空,但是document.getElementsByTagName('body')
有东西
答案 0 :(得分:3)
听起来好像您在“ no conflict”模式下使用jQuery,其中$
不是jQuery
。听起来$
可能正在用于另一个库,例如MooTools或PrototypeJS。 (关于$('body')
返回null
的声音听起来非常类似于MooTools或PrototypeJS,因为在这些库中,$
是getElementById
的快捷方式[ 有效地解决了过时IE的错误修正,并且您可能没有id="body"
的元素。)
改为使用jQuery
:
jQuery(window).on("load", function() { /*...*/ });
...或创建IIFE并创建等于$
的本地jQuery
:
(function($) {
// Here, $ === jQuery
$(window).on("load", function() { /*...*/ });
})(jQuery);
旁注:load
上的window
事件在页面加载过程的最后一次发生,非常强烈,一直等到所有图像和其他资源完全加载完毕。根据您在load
回调中所执行的操作,您可能想使用其他方法。
个人而言,我更喜欢将脚本放在body
元素的末尾,紧跟在</body>
标记的前面,并使用上面的IIFE(在这时,所有HTML已被解析,您可以对结果元素进行操作)。但是很多人喜欢jQuery的“就绪”机制,此机制在此之后发生的非常少,当正确调用时,该机制还会为您传递jQuery
的实例:
jQuery(function($) {
// Here, $ === jQuery
});
答案 1 :(得分:0)
不推荐使用该语法。
您可以使用{{1}}