我在WordPress插件中有一个简单的jQuery脚本,它使用这样的jQuery包装器:
$(document).ready(function(){
// jQuery code is in here
});
我在WordPress仪表板中调用此脚本,并在jQuery框架加载后加载它。
当我在Firebug中检查页面时,我不断收到错误消息:
TypeError:$不是函数
(文档)$。就绪(函数(){
我是否可以将脚本包装在此函数中:
(function($){
// jQuery code is in here
})(jQuery);
我有这个错误很多次,我不知道如何处理它。
非常感谢任何帮助。
答案 0 :(得分:283)
默认情况下,当您在Wordpress中排队jQuery时,必须使用jQuery
,并且不使用$
(这是为了与其他库兼容)。
你在function
中包装它的解决方案可以正常工作,或者你可以用其他方式加载jQuery(但这在Wordpress中可能不是一个好主意)。
如果您必须使用document.ready
,您实际上可以将$
传递给函数调用:
jQuery(function ($) { ...
答案 1 :(得分:135)
这应该解决它:
jQuery(document).ready(function($){
//you can now use $ as your jQuery object.
var body = $( 'body' );
});
简单地说,WordPress会先运行自己的脚本,然后释放$
var,这样就不会与其他库冲突。这是完全合理的,因为WordPress用于各种网站,应用程序,当然还有博客。
从他们的文件:
WordPress附带的jQuery库设置为noConflict() mode(参见wp-includes / js / jquery / jquery.js)。这是为了防止 与WordPress的其他JavaScript库的兼容性问题 可以链接。
在noConflict()模式下,jQuery的全局$快捷方式不是 可用...
答案 2 :(得分:21)
此解决方案适合我
;(function($){
// your code
})(jQuery);
将代码移到闭包中,并使用$
代替jQuery
...搜索过多后
答案 3 :(得分:19)
你可以像这样避免冲突
var jq=jQuery.noConflict();
jq(document).ready(function(){
alert("Hi this will not conflict now");
jq('selector').show();
});
答案 4 :(得分:16)
var $=jQuery.noConflict();
$(document).ready(function(){
// jQuery code is in here
});
感谢Ashwani Panwar和Cyssoo回答:https://stackoverflow.com/a/29341144/3010027
答案 5 :(得分:13)
试试这个:
<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>
答案 6 :(得分:8)
你必须在函数()
中传递$.parent-classname p{
/*style here*/
}
答案 7 :(得分:7)
仔细检查你的jQuery引用。您可能要么多次引用它,要么过早地调用函数(在定义jQuery之前)。你可以尝试我的评论中提到的,并将任何jQuery引用放在你的文件的顶部(在头部),看看是否有帮助。
如果使用jQuery的封装,在这种情况下应该没有用。请尝试一下,因为我觉得它更漂亮,更明显,但是如果没有定义jQuery,你会得到同样的错误。
最后...... jQuery目前尚未定义。
答案 8 :(得分:5)
将$
替换为jQuery
像这样:
jQuery(function(){
//your code here
});
答案 9 :(得分:5)
另外,我找到了使用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);
我从这里找到了这个解决方案。 https://thecodingstuff.com/how-to-properly-use-jquery-noconflict-mode-in-wordpress/
答案 10 :(得分:4)
什么对我有用。要导入的第一个库是查询库,然后调用jQuery.noConflict()方法。
<head>
<script type="text/javascript" src="jquery.min.js"/>
<script>
var jq = jQuery.noConflict();
jq(document).ready(function(){
//.... your code here
});
</script>
答案 11 :(得分:4)
(function( $ ) { "use strict"; $(function() { //Your code here }); }(jQuery));
答案 12 :(得分:3)
<script>
var jq=jQuery.noConflict();
(function ($)
{
function nameoffunction()
{
// Set your code here!!
}
$(document).ready(readyFn);
})(jQuery);
现在使用jq代替jQuery
答案 13 :(得分:3)
当您的函数名称和文件中的某个ID名称相同时,您会遇到此问题。只需确保文件中的所有ID名称都是唯一的。
答案 14 :(得分:3)
使用
jQuery(document).
而不是
$(document).
或
在函数中,$指向jQuery,如你所料
(function ($) {
$(document).
}(jQuery));
答案 15 :(得分:2)
您可以使用
jQuery(document).read(function(){ ... });
或
(function ($) { ... }(jQuery));