$未在WordPress中使用jQuery定义

时间:2010-10-14 作者:Mild Fuzz

我知道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;
    })
});
很好。

3 个回复
最合适的回答,由SO网友:nobody 整理而成

您可以将javascript封装在一个自调用函数中,然后传递jQuery 作为它的参数,使用$ 作为局部变量名称。例如:

(function($) {
  $(document).ready(function(){
    $("ul.vimeo_desc_feed li a").click(function(){
      alert($(this).attr(\'href\'));
      return false;
    })
 });
}(jQuery));
应按预期工作。

如果我没记错WP提供的jQuery版本(如果wp_enqueue_script(\'jquery\')) 立即将jQuery置于无冲突状态,导致$ 未定义。

SO网友:EAMann

你快到了!

jQuery(document).ready(function($){
    $("ul.vimeo_desc_feed li a").click(function(){
        alert($(this).attr(\'href\'));
        return false;
    })

});
您必须将对jQuery的引用作为$ 函数,否则它将不起作用。如果你在第一个function() 正如我在上面所做的那样,一切都会很好。

SO网友:rohmann

将函数传递给jQuery是$(document).ready(...) 然后通过放置$ 作为回调的第一个参数,可以在该回调中为jQuery创建别名:

jQuery(function($) {
    $("ul.vimeo_desc_feed li a").click(function(){
        alert($(this).attr(\'href\'));
        return false;
    });
});
您可以查看相关文档here.

结束

相关推荐

测试jQuery或Prototype是否由另一个插件排队?

在我的插件中,我想测试jQuery或Prototype(或两者)是否将由另一个插件加载。所以,有wp_enqueue_script(\'jquery\') 或wp_enqueue_script(\'prototype\') 已调用。我在文件中有适合我的插件的代码plugin.prototype.js 和plugin.jquery.js 如果原型已排队,我的插件将使用plugin.prototype.js. 这样我就避免了在站点中加载不必要的内容。如果两者都没有加载,我将排队,以较小者为准。如何测试以查看已