控制台.log在 $(document).ready(function() 中不起作用



已经很久没有使用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);

使用此代码,我希望有两个日志输出:

logA1.12.4

logB1.12.4

但相反,我只得到logA1.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文件是否正常工作,因为我尝试过,但是它与您提到的版本一起正常工作

最新更新