我见过几个与此相关的问题,但没有一个问题提供了明确的答案。
在这个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();
});
});
我试过第一个,但遇到了问题。如果我知道这两种方法都有可能的话,我会更多地研究它们。但如果有人知道这是不可能的,我想我将不得不放弃它。
谢谢。
发布于 2013-12-18 21:06:19
如果不想污染全局命名空间,请创建对象并向其追加函数。
var myModule = {};
$(function(){
var foo = function(){/*code*/};
myModule.bar = foo;
});
然后使用myModule.bar()
从任何地方调用您的函数;
发布于 2013-12-18 21:09:32
您可以将函数附加到jQuery命名空间,在某种意义上将它们转换为jQuery插件。到那时,无论jquery在哪里,它们都是可用的。
function global_function() {
$.a_jquery_function();
}
$(function () {
$.a_jquery_function = function () {
do_something();
};
});
发布于 2013-12-18 21:00:20
在声明您希望全局可用的函数时,应该使用var functionname=function(){}
,而不是使用window.functionname=function{}
。所有全局函数都是window
对象的属性,但相反,window
对象的所有属性都是全局函数。
https://stackoverflow.com/questions/20668220
复制相似问题