jQuery范围与wordpress中的noconflict

时间:2013-08-08 10:13:15

标签: javascript scope jquery

我将旧版Joomla中的模板带到Wordpress中,并获得了一些我必须使用的javascript文件,其中主要参考其他功能。所有这些文件都使用jQuery左右和中心,并且默认情况下Wordpress使用noconflict我认为将每个js文件包装成这样简单:

(function($){
....my code...
})(jQuery);

我得到的问题是跨文件调用的函数范围,例如:

档案1

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

文件2

(function($){
    function mainmenu(){
        alert("hello");
    }
})(jQuery);

这是我得到错误的问题“未捕获ReferenceError:mainmenu未定义”,我知道引用该函数会很简单,但我看不到它,可能是一个“Doh”时刻。 任何帮助都非常感谢。是的我知道我可以找到并用'jQuery'替换'$',但我只是觉得必须有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

这是因为mainmenu是第二个文件中匿名函数内的闭包函数..所以它在file1中不可用。

一种可能的解决方案是使其成为一个全局函数,以便它可以在全球范围内使用。

(function($){
    window.mainmenu = function (){
        alert("hello");
    }
})(jQuery);