Jas*_*son 202 wordpress jquery function wrapper typeerror
我在WordPress插件中有一个简单的jQuery脚本,它使用这样的jQuery包装器:
$(document).ready(function(){
// jQuery code is in here
});
Run Code Online (Sandbox Code Playgroud)
我在WordPress仪表板中调用此脚本,并在加载jQuery框架后加载它.
当我在Firebug中检查页面时,我不断收到错误消息:
TypeError:$不是函数
$(文件).就绪(函数(){
我是否可以在此函数中包装脚本:
(function($){
// jQuery code is in here
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
我有这个错误很多次,我不知道如何处理它.
任何帮助将不胜感激.
Exp*_*lls 307
默认情况下,当您在Wordpress中排队jQuery时,必须使用jQuery
,$
而不使用(这是为了与其他库兼容).
你的包装解决方案function
可以正常工作,或者你可以用其他方式加载jQuery(但这在Wordpress中可能不是一个好主意).
如果你必须使用document.ready
,你实际上可以$
进入函数调用:
jQuery(function ($) { ...
Run Code Online (Sandbox Code Playgroud)
Mat*_*rte 142
这应该解决它:
jQuery(document).ready(function($){
//you can now use $ as your jQuery object.
var body = $( 'body' );
});
Run Code Online (Sandbox Code Playgroud)
简而言之,WordPress会先运行自己的脚本,然后释放$
var,这样就不会与其他库冲突.这是完全合理的,因为WordPress用于各种网站,应用程序,当然还有博客.
从他们的文件:
WordPress附带的jQuery库设置为noConflict()模式(请参阅wp-includes/js/jquery/jquery.js).这是为了防止WordPress可以链接的其他JavaScript库的兼容性问题.
在noConflict()模式下,jQuery的全局$快捷方式不可用...
小智 24
这个解决方案对我有用
;(function($){
// your code
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
将代码移到闭包内,$
而不是使用jQuery
我在https://magento.stackexchange.com/questions/33348/uncaught-typeerror-undefined-is-not-a-function-when-using-a-jquery-plugin-in-ma中找到了上述解决方案
...搜索过多后
Ash*_*war 19
你可以避免这样的冲突
var jq=jQuery.noConflict();
jq(document).ready(function(){
alert("Hi this will not conflict now");
jq('selector').show();
});
Run Code Online (Sandbox Code Playgroud)
opt*_*tes 17
var $=jQuery.noConflict();
$(document).ready(function(){
// jQuery code is in here
});
Run Code Online (Sandbox Code Playgroud)
感谢Ashwani Panwar和Cyssoo回答:https://stackoverflow.com/a/29341144/3010027
Jos*_*tes 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>
Run Code Online (Sandbox Code Playgroud)
你必须在函数中传递$()
<script>
jQuery(document).ready(function($){
// jQuery code is in here
});
</script>
Run Code Online (Sandbox Code Playgroud)
小智 8
用
jQuery(document).
Run Code Online (Sandbox Code Playgroud)
代替
$(document).
Run Code Online (Sandbox Code Playgroud)
或者
在函数中, $ 指向 jQuery,正如您所期望的
(function ($) {
$(document).
}(jQuery));
Run Code Online (Sandbox Code Playgroud)
小智 7
仔细检查你的jQuery引用.您可能要么多次引用它,要么过早地调用函数(在定义jQuery之前).你可以尝试我的评论中提到的,并将任何jQuery引用放在你的文件的顶部(在头部),看看是否有帮助.
如果你使用jQuery的封装它在这种情况下应该没有帮助.请尝试它,因为我认为它更漂亮,更明显,但如果没有定义jQuery,你将得到相同的错误.
最后...... jQuery目前尚未定义.
小智 7
像这样替换$
符号jQuery
:
jQuery(function(){
//your code here
});
Run Code Online (Sandbox Code Playgroud)
什么对我有用。要导入的第一个库是查询库,然后调用 jQuery.noConflict() 方法。
<head>
<script type="text/javascript" src="jquery.min.js"/>
<script>
var jq = jQuery.noConflict();
jq(document).ready(function(){
//.... your code here
});
</script>
Run Code Online (Sandbox Code Playgroud)
另外,我找到了使用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);
Run Code Online (Sandbox Code Playgroud)
我从这里找到了这个解决方案。 https://thecodingstuff.com/how-to-properly-use-jquery-noconflict-mode-in-wordpress/
归档时间: |
|
查看次数: |
506705 次 |
最近记录: |