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

$(document).ready(function(){

    // jQuery code is in here

});

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

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

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

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

(function($){

    // jQuery code is in here

})(jQuery);

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

任何帮助都将不胜感激。


当前回答

Use

jQuery(document).

而不是

$(document).

or

在函数中,$如您所料指向jQuery

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

其他回答

此外,我发现了使用jQuery noConflict模式的好解决方案。

(function($){

  $(document).ready(function(){
      // write code here
  });

  // or also you can write jquery code like this

  jQuery(document).ready(function(){
      // write code here
  });

})(jQuery);

我在TryVary.com找到了这个解决方案。

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

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

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

你可以避免这样的冲突

var jq=jQuery.noConflict();
jq(document).ready(function(){  
  alert("Hi this will not conflict now");
  jq('selector').show();
});
var $=jQuery.noConflict();

$(document).ready(function(){
    // jQuery code is in here
});

感谢Ashwani Panwar和Cyssoo回答:https://stackoverflow.com/a/29341144/3010027

在WordPress中使用jQuery而不是$的原因:https://pippinsplugins.com/why-loading-your-own-jquery-is-irresponsible/

这个解决方案对我很有效

;(function($){
    // your code
})(jQuery);

将代码移动到闭包中,使用$而不是jQuery

我在https://magento.stackexchange.com/questions/33348/uncaught-typeerror-undefined-is-not-a-function-when-using-a-jquery-plugin-in-ma上找到了上面的解决方案

...在寻找太多之后