从全局范围调用jQuery中的函数

eje*_*211 2 javascript jquery scope

我已经看到了与此相关的问题的几个问题,但没有一个提供明确的答案.

在这个JavaScript中:

function global_function() {
    a_jquery_function();
}

$(function () {
    var a_jquery_function = function () {
        do_something();
    };
});
Run Code Online (Sandbox Code Playgroud)

我可以做一些事情,以便全局函数可以调用jQuery函数吗?显然,它不能像我那样做,但我想知道是否可以使用jQuery.fn或使用自定义事件.例如:

function global_function() {
    $.fn.a_jquery_function();
}

$(function () {
    $.fn.a_jquery_function() = function () {
        do_something();
    };
});
Run Code Online (Sandbox Code Playgroud)

要么

function global_function() {
    trigger_event('my_event', args);
}

$(function () {
    $(document).on('my_event', function(args) {
        do_something();
    });
});
Run Code Online (Sandbox Code Playgroud)

我试过第一个,但我遇到了问题.如果我知道其中任何一种可能,我会更多地研究它们.但如果有人知道不可能这样做,我想我必须放弃它.

谢谢.

use*_*654 9

您可以将函数附加到jQuery名称空间,从某种意义上说它们将它们转换为jQuery插件.在那时,它们将在jquery的任何地方可用.

function global_function() {
    $.a_jquery_function();
}

$(function () {
    $.a_jquery_function = function () {
        do_something();
    };
});
Run Code Online (Sandbox Code Playgroud)


Gin*_*den 5

如果您不想污染全局名称空间,请创建对象并向其添加函数。

var myModule = {};
$(function(){
    var foo = function(){/*code*/};
    myModule.bar = foo;
});
Run Code Online (Sandbox Code Playgroud)

然后,您可以从任何地方使用调用函数myModule.bar()