jQuery版本1.12.4 $(window).on不是函数

时间:2018-08-06 15:55:36

标签: jquery

我搜索了整个互联网,发现的是:

  

方法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')有东西

2 个答案:

答案 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}}