我在WordPress插件中有一个简单的jQuery脚本,它使用jQuery包装器,像这样:

$(document).ready(function(){

    // jQuery code is in here

});

我从WordPress仪表板内调用这个脚本,并在jQuery框架加载后加载它。

当我在Firebug中检查页面时,我不断地收到错误消息:

$不是一个函数 $(文档)时函数(){

我是否应该在这个函数中包装脚本:

(function($){

    // jQuery code is in here

})(jQuery);

我有这个错误相当多次,我不知道如何处理它。

任何帮助都将不胜感激。


当前回答

试试这个:

<script language="JavaScript" type="text/javascript" src="jquery/jquery.js"></script>
<script>
    jQuery.noConflict();
    (function ($) {
        function readyFn() {
            // Set your code here!!
        }

        $(document).ready(readyFn); 
    })(jQuery);

</script>

其他回答

(function( $ ) {
  "use strict";

  $(function() {

    //Your code here

  });

}(jQuery));

仔细检查jQuery引用。有可能您多次引用它,或者您过早地调用了函数(在jQuery定义之前)。你可以尝试在我的评论中提到的,把任何jQuery引用放在你的文件的顶部(在头部),看看是否有帮助。

如果使用jQuery的封装,在这种情况下应该没有帮助。请尝试一下,因为我认为它更漂亮,更明显,但如果jQuery没有定义,你会得到同样的错误。

最后……jQuery目前还没有定义。

wp_enqueue_script( string $handle, string $src = '', string[] $deps = array(), string|bool|null $ver = false, bool $in_footer = false )

如果你使用jquery作为前端,你可以通过jquery传递$deps来实现

你可以使用

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

or

(function ($) { ...... }(jQuery));

试试这个:

<script language="JavaScript" type="text/javascript" src="jquery/jquery.js"></script>
<script>
    jQuery.noConflict();
    (function ($) {
        function readyFn() {
            // Set your code here!!
        }

        $(document).ready(readyFn); 
    })(jQuery);

</script>