0

我将一个模板从旧版本的 Joomla 引入到 Wordpress 中,并获得了相当多的 javascript 文件,我必须在主要引用其他函数时使用这些文件。所有这些文件都使用 jQuery left right and center 并且默认情况下 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'替换'$',但我只是认为必须有办法做到这一点?

4

1 回答 1

2

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

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

(function($){
    window.mainmenu = function (){
        alert("hello");
    }
})(jQuery);
于 2013-08-08T10:24:37.897 回答