0

我在添加到 Wordpress 站点的一些自定义文件中使用 jQuery,并使用它来允许我使用“$”快捷方式:

jQuery(function ($) {
  $(selector).bla();
  // etc
}

但是,如果我想将代码拆分为多个文件,则每个文件中都需要存在此构造,然后不能从另一个文件调用其中的函数。这个怎么做?我可以以某种方式将某些函数声明为全局函数吗?

4

4 回答 4

1

你可以使用这样的东西:

var myFunc = function($) {
    function toExport() {
            alert($);
    }

    return toExport;
}(jQuery);​

只需返回您需要的资源(它可以是单个函数、对象或您实际想要的任何东西。)

于 2012-12-22T07:03:24.437 回答
1

您可能希望查看使用requirejs定义模块,然后将模块作为依赖项传递。您还可以使用它将 jQuery 定义为依赖项,以便可以使用您想要的任何变量名称在本地范围内限定它。

require(['jquery','somemodule','someothermodule'], function($,module1,module2) {
    $(function() {
        var mod1 = new module1();
        var mod2 = new module2();
        ...
    });
});
于 2012-12-22T06:59:19.647 回答
0

jQueryUI 实际上是用类似的方式编写的:

(function( $, undefined ) {
    ...
}( jQuery ) );

这样,$保证是jQuery函数的同义词,并且关键字undefined将被定义为具有未定义值的参数。该undefined部分实际上修复了一些浏览器的一些挑剔问题,因为它们并非都以相同的方式处理 undefined 。

于 2012-12-22T06:49:55.393 回答
0

您始终可以在全局范围内声明构造之外的函数。jQuery(function() {...});

您只是无法在 DOM 准备好之前访问它,这意味着如果它们访问 DOM ,您将无法在外部执行这些功能。jQuery(function() {...});


您还可以始终通过为属性分配值来创建全局变量window

window.theanswer = 42;

向全局命名空间添加许多值并不是一个好的做法,并且存在其他技术来创建模块化 JavaScript 来解决这个问题。请参阅 tvanfosson 的回答

于 2012-12-22T06:56:30.360 回答