问题描述
我知道 jQuery 是加载的,因为我可以切换 $
为’jQuery’,并且所有的行为都按预期,但如果我无法解决这个问题,这将是一个凌乱的脚本
这个脚本:
jQuery(document).ready(function(){
$("ul.vimeo_desc_feed li a").click(function(){
alert($(this).attr('href'));
return false;
})
});
产生错误 $ is not a function
这个脚本:
jQuery(document).ready(function(){
jQuery("ul.vimeo_desc_feed li a").click(function(){
alert(jQuery(this).attr('href'));
return false;
})
});
工作正常。
最佳解决方案
您可以将 JavaScript 包装在 self-invoking 功能中,然后将 jQuery
作为参数传递给 $
作为本地变量名称。例如:
(function($) {
$(document).ready(function(){
$("ul.vimeo_desc_feed li a").click(function(){
alert($(this).attr('href'));
return false;
})
});
}(jQuery));
应按预期工作。
如果我记得正确的 WP-supplied 版本的 jQuery(如果您使用 wp_enqueue_script('jquery')
的话),立即将 jQuery 放在 no-conflict 中,导致 $
未定义。
次佳解决方案
你几乎在那里
jQuery(document).ready(function($){
$("ul.vimeo_desc_feed li a").click(function(){
alert($(this).attr('href'));
return false;
})
});
你必须将 jQuery 作为 $
函数的引用传递给你的方法,否则它将不起作用。如果你刚刚把第一个 function()
调用一个 $,就像上面那样,事情会很好。
第三种解决方案
将函数传递给 jQuery 是 $(document).ready(...)
的缩写,然后通过将 $
作为回调的第一个参数,在该回调中创建一个 jQuery 的别名:
jQuery(function($) {
$("ul.vimeo_desc_feed li a").click(function(){
alert($(this).attr('href'));
return false;
});
});
您可以看到该 here 的文档。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。