类型错误:$ 不是 WordPress 函数

IT技术 javascript jquery wordpress
2021-02-10 01:31:02

.js购买的主题中的文档可能有错误

$('.tagcloud a').wrap('<span class="st_tag" />');

我正在尝试解决它,但我不是程序员,所以我不知道如何解决。该网站是这样的:http : //www.framerental.com

6个回答

您使用jQuery.noConflict();So$是未定义的。

你可以在这里阅读更多关于它的文档

尝试以这种方式修改您的代码($向就绪函数添加符号):

jQuery(document).ready(function($) {
    // Code that uses jQuery's $ can follow here.
});
在我注释掉主题的旧“排队”jQuery 之后,这修复了我所有的错误。坦率地说,我发现“wp_enqueue_script”系统真的很烦人、做作、过于复杂和不必要。我希望 WordPress 能够为管理面板隐藏/划分它自己的 js 代码,并让我们以我们想要的方式使用 jQuery。“wp_enqueue_script”是否通过了 Google PageSpeed Insight 测试?可能不是。或者只是要求所有 WP 插件和主题都使用相同的 jQuery——那么每个人都会在同一个页面上,我们可以一起前进。
2021-03-17 01:31:02
尝试在绑定表达式之前定义函数。
2021-03-19 01:31:02
这应该是公认的答案。唯一对我有用的东西!
2021-03-24 01:31:02
我也反对 WP 的入队方法,但现在已经接受了它。它保持最佳实践,你可以很容易地忽略它,只需在模板中添加带有链接标签的脚本即可。WP 自动入队的 jQuery,所以你必须使用出队。WP 还具有本地化功能,在组合脚本以提高页面速度方面值得研究。
2021-04-01 01:31:02
行!!现在有些工作,但出现了其他错误:Referenceerror resiza 窗口未定义。行:jQuery(window).bind("resize", resizeWindow); function resizeWindow( e ) { var newWindowWidth = jQuery(window).width();
2021-04-08 01:31:02

功能错误在几乎所有内容管理系统中都很常见,您可以通过几种方法来解决这个问题。

  1. 使用以下方法包装您的代码:

    <script> 
    jQuery(function($) {
    
    YOUR CODE GOES HERE
    
    });
    </script>
    
  2. 您还可以使用 jQuery 的 API noConflict();

    <script>
    $.noConflict();
    jQuery( document ).ready(function( $ ) {
    // Code that uses jQuery's $ can follow here.
    });
    // Code that uses other library's $ can follow here.
    </script>
    
  3. 另一个使用 noConflict 而不使用 document ready 的例子:

    <script>
    jQuery.noConflict();
        (function( $ ) {
            $(function() { 
                // YOUR CODE HERE
            });
         });
    </script>
    
  4. 您甚至可以选择创建自己的别名以避免冲突,如下所示:

    var jExample = jQuery.noConflict();
    // Do something with jQuery
    jExample( "div p" ).hide();
    
  5. 另一个更长的解决方案是将 $ 的所有引用重命名为 jQuery:

    $( "div p" ).hide();jQuery( "div p" ).hide();

而不是这样做:

$(document).ready(function() { });

你应该这样做:

jQuery(document).ready(function($) {

    // your code goes here

});

这是因为 WordPress 可能会在未来或现在将 $ 用于 jQuery 以外的其他内容,因此您需要以一种方式加载 jQuery,即 $ 只能在 jQuery 文档就绪回调中使用。

这适用于 doc.ready 中的任何内容。如果您想要全面使用它(窗口函数),请查看上面的 Savage 的答案。
2021-04-10 01:31:02

只需添加这个:

<script>
var $ = jQuery.noConflict();
</script>

到 header.php 中的 head 标签。或者,如果您想在管理区域(或未使用 header.php 的某处)中使用美元符号,就在您想使用它的地方之前。

(可能存在一些我不知道的冲突,请对其进行测试,如果有,请使用此处或以下链接中提供的其他解决方案。)

来源:http : //www.wpdevsolutions.com/use-the-dollar-sign-in-wordpress-instead-of-jquery/

如果您在页脚中加入自己的自定义主题脚本,这将起作用。
2021-04-03 01:31:02

要么您不包括 jquery 工具包/lib,正如某些人所建议的那样,要么存在各种冲突。测试:包含 jQuery 并像这样测试:

console.log($);
console.log($ === jQuery);

如果$不是 undefined,并且$ === jQuery记录为 false,那么您肯定会遇到冲突。$with替换可以jQuery解决这个问题,但这可能非常乏味(所有额外的输入......)。一般来说,我开始我的脚本时$jq = _$ = jQuery;,至少有一个对 jQuery 对象的更短的引用。
当然,在你这样做之前,检查一下你是否不小心覆盖了事先设置的变量:当然,console.log($jq, _jQ, _$);不管哪个都不 undefined应该被搁置

@user1645326:是的,有。你在 jurka 的回答下面的评论告诉我你要么没有在包装jQuery(document).ready(function($){函数中编写所有的 jQ 代码,你应该这样做。此外,resizeWindow应该从而$(this).width();不是从那时获得它,jQuery(window).with();但也许最重要的是:错误说明了一切:您的代码中有一个错字:只需在您的代码中搜索resiza window,然后将其替换为resizeWindow...
2021-04-02 01:31:02
Elias 你似乎有答案,但只要我不是程序员,我就觉得你在说中文。对我来说有什么简单的解决方案吗?我完全迷失了:-(
2021-04-09 01:31:02