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



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

在这个 JavaScript 中:

function global_function() {
    a_jquery_function();
}
$(function () {
    var a_jquery_function = function () {
        do_something();
    };
});

我可以做一些事情让全局函数可以调用 jQuery 函数吗?显然,它不能按照我在那里的方式完成,但我想知道是否可以使用 jQuery.fn 或使用自定义事件来完成。例如:

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

function global_function() {
    trigger_event('my_event', args);
}
$(function () {
    $(document).on('my_event', function(args) {
        do_something();
    });
});

我已经尝试了第一个,但我遇到了问题。如果我知道两者都有可能,我会更多地研究它们。但是,如果有人知道这是不可能的,我想我将不得不放弃它。

谢谢。

您可以将函数附加到 jQuery 命名空间,从某种意义上说,将它们转换为 jQuery 插件。 到那时,无论jQuery在哪里,它们都将可用。

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

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

var myModule = {};
$(function(){
    var foo = function(){/*code*/};
    myModule.bar = foo;
});

然后使用 myModule.bar() 从任何地方调用函数;

而不是使用var functionname=function(){},在声明您希望全局可用的函数时,您应该使用window.functionname=function{}。所有全局函数都是 window 对象的属性,但反之亦然,window对象的所有属性都是全局函数。

你可以像这样编写你的全局jQuery函数

(function($){
  $.fn.func_name = function(var){
      write your code and functions here
  }
})(jQuery);

在您的 HTML 或 JS 文件中调用$().func_name(var)进行注册。


最新更新