TypeError:$不是Wordpress函数

use*_*326 44 javascript wordpress jquery

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

$('.tagcloud a').wrap('<span class="st_tag" />');
Run Code Online (Sandbox Code Playgroud)

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

jur*_*rka 123

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

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

尝试以这种方式修改代码(将$标志添加到就绪功能):

jQuery(document).ready(function($) {
    // Code that uses jQuery's $ can follow here.
});
Run Code Online (Sandbox Code Playgroud)


Sim*_*ter 34

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

  1. 使用以下代码包装代码:

    <script> 
    jQuery(function($) {
    
    YOUR CODE GOES HERE
    
    });
    </script>
    
    Run Code Online (Sandbox Code Playgroud)
  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>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在不使用文档就绪的情况下使用noConflict的另一个示例:

    <script>
    jQuery.noConflict();
        (function( $ ) {
            $(function() { 
                // YOUR CODE HERE
            });
         });
    </script>
    
    Run Code Online (Sandbox Code Playgroud)
  4. 你甚至可以选择创建你的别名来避免这样的冲突:

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

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


小智 13

而不是这样做:

$(document).ready(function() { });
Run Code Online (Sandbox Code Playgroud)

你应该这样做:

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

    // your code goes here

});
Run Code Online (Sandbox Code Playgroud)

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


Eli*_*gem 9

您可能没有像某些人所建议的那样包含jquery toolkit/lib,或者存在各种冲突.要测试:包含jQuery并测试如下:

console.log($);
console.log($ === jQuery);
Run Code Online (Sandbox Code Playgroud)

如果$未定义,并且$ === jQuery记录为false,那么您肯定会遇到冲突.替换你$jQuery解决方案,但这可能是相当繁琐的(所有额外的打字......).通常我开始使用脚本$jq = _$ = jQuery;至少对jQuery对象有一个较短的引用.
当然,你这样做之前,请检查,如果你不小心覆盖已预先设定的变量:console.log($jq, _jQ, _$);取其 undefined应该被单独留下,当然


Fan*_*nky 9

只需添加:

<script>
var $ = jQuery.noConflict();
</script>
Run Code Online (Sandbox Code Playgroud)

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

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

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


Sav*_*age 6

我添加了一个自定义脚本文件,该文件在该head部分的末尾加载,并在顶部插入以下内容:

(function (jQuery) {
    window.$ = jQuery.noConflict();
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

(这是对Fanky的回答的修改)


Waq*_*gir 5

除了noConflict之外,这也很有帮助:

(function( $ ) {
    // Variables and DOM Caching using $.
    var body = $('body');
    console.log(body);
})( jQuery );
Run Code Online (Sandbox Code Playgroud)


小智 -5

jQuery可能丢失。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>