我在许多具有相同主题、设置等的网站上使用过这个jquery脚本。
这是wordpress Genesis儿童主题。
然而,在我当前的本地构建中,当我单击类为“scroll”的a href时,我得到一个控制台错误,显示如下:
我的应用程序第19行。js是我以前从未遇到过问题的代码:
$(".scroll").click(function () {
if (location.pathname.replace(/^\\//, "") === this.pathname
.replace(/^\\//, \'\') && location.hostname === this.hostname
) {
var target = $(this.hash);
target = target.length ? target : $("[name=" + this
.hash.slice(1) + "]");
if (target.length) {
$("html, body").animate({
scrollTop: target.offset().top
}, 1000);
return false;
}
}
});
我正在运行jQuery 3.3.1。我已经注释掉了应用程序中的所有代码。js来确定问题可能来自何处。这段代码位于顶部,我添加了控制台。在控制台中显示整个文档的日志。
我做错了什么?
非常感谢。
SO网友:Remzi Cavdar
在WordPress中,jQuery以noConflict模式加载,这意味着您需要使用jQuery而不是美元符号$
您可以将代码封装在一个匿名函数(技术上是任何IIFE)中,在其中传入jQuery以映射到$,并将其与document ready相结合,如下所示:
jQuery(document).ready(function($) {
// $ Works! You can test it with next line if you like
// console.log($);
});
您也可以在不准备文档的情况下执行此操作(不推荐):
(function($) {
// $ Works! You can test it with next line if you like
// console.log($);
})( jQuery );
有关更多说明,请参阅链接:
https://digwp.com/2011/09/using-instead-of-jquery-in-wordpress/