未捕获的TypeError:无法读取未定义的属性“”Replace“”

时间:2018-10-24 作者:Katie R.

我在许多具有相同主题、设置等的网站上使用过这个jquery脚本。

这是wordpress Genesis儿童主题。

然而,在我当前的本地构建中,当我单击类为“scroll”的a href时,我得到一个控制台错误,显示如下:

enter image description here

我的应用程序第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来确定问题可能来自何处。这段代码位于顶部,我添加了控制台。在控制台中显示整个文档的日志。

我做错了什么?

非常感谢。

1 个回复
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/

结束

相关推荐

WP入队脚本-jQuery未加载

我添加了此代码以添加jQuerywp_enqueue_script( \'jqueryadd\',\'http://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js\', array(),\'22.23\',true ); 但我认为这是不必要的,因为我相信wordpress附带了jquery,而wp\\u enqueue脚本提供了是否包含jquery的选项。但这是一个脚本形式的mdbootstrap。如果我删除上面的代码,它会给我一

未捕获的TypeError:无法读取未定义的属性“”Replace“” - 小码农CODE - 行之有效找到问题解决它

未捕获的TypeError:无法读取未定义的属性“”Replace“”

时间:2018-10-24 作者:Katie R.

我在许多具有相同主题、设置等的网站上使用过这个jquery脚本。

这是wordpress Genesis儿童主题。

然而,在我当前的本地构建中,当我单击类为“scroll”的a href时,我得到一个控制台错误,显示如下:

enter image description here

我的应用程序第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来确定问题可能来自何处。这段代码位于顶部,我添加了控制台。在控制台中显示整个文档的日志。

我做错了什么?

非常感谢。

1 个回复
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/