已经很久没有使用jQuery了。现在,有了一个新的项目,我有一种奇怪的行为。
脚本按正确的顺序加载:
<script type='text/javascript' src='http://example.com/wp-includes/js/jquery/jquery.js?ver=1.12.4'></script>
some other scripts...
<script type='text/javascript' src='http://example.com/wp-content/themes/mytheme/myscript.js?ver=4.9.7'></script>
myscript.js
(function ($) {
console.log('logA');
console.log($.fn.jquery);
$(document).ready(function(){
console.log('logB');
console.log($.fn.jquery);
});
})(jQuery);
使用此代码,我希望有两个日志输出:
logA
1.12.4
logB
1.12.4
但相反,我只得到logA
1.12.4
作为输出。
控制台中没有显示logB
,尽管我可以使用$('#elem, .elem2')
访问 DOM 元素。
这是怎么回事?
我也尝试了没有匿名功能,这给了我一个错误$ is not a function
$(document).ready(function(){
console.log('logB');
});
j查询版本:1.12.4
通过注释,在 @Rup 提出的观点之后,脚本中的某些内容似乎覆盖了console.log
方法,因此它不再打印到控制台。 要在脚本范围内解决此问题,您可以将 console.log 方法传递到 IIFE 中,以便它保留分配日志的原始函数。
(function ($, log) {
log('logA');
log($.fn.jquery);
$(document).ready(function(){
log('logB');
log($.fn.jquery);
});
})(jQuery, console.log);
检查您的jQuery文件是否正常工作,因为我尝试过,但是它与您提到的版本一起正常工作