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

时间:2013-12-18 20:56:50

标签: javascript jquery scope

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

在这个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();
    });
});

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

感谢。

4 个答案:

答案 0 :(得分:8)

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

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

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

答案 1 :(得分:4)

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

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

然后,您可以使用myModule.bar();

从任意位置调用您的函数

答案 2 :(得分:3)

而不是使用var functionname=function(){},在声明全局可用的功能时,应使用window.functionname=function{}。 所有全局函数都是window对象的属性,但反过来也是如此,window对象的所有属性都是全局函数。

答案 3 :(得分:0)

您可以这样编写全局jQuery函数

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

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