2012-07-11 57 views
0

嗨我有几个自定义函数包装在jQuery的document.ready函数中。大多数这些功能都是在该功能和工作中使用的,但有一种情况是我想从全局范围访问此功能中包含的功能。我怎样才能做到这一点?我可以做些什么: jQueryReadyScope.myFunctionName('paramaters');使用javascript访问隐藏函数

非常感谢。

+1

首要的是:您为什么要访问它?我不相信你需要从外面访问它 – Onkelborg 2012-07-11 22:53:23

回答

2

没有,但是你可以命名的功能和它传递给.ready()

var myFunctionName = function (params) { 
    // do things 
} 

// pass as callback to ready function 
jQuery(document).ready(myFunctionName); 

// access directly like any other function: 
myFunctionName('paramaters'); 
+0

是的,你可以。只需将一些随机对象附加到窗口对象,如下所示:window [“something”] =“else”; – Onkelborg 2012-07-11 22:53:58

+0

对不起,不清楚。我认为这个问题是:“我可以做些什么:'jQueryReadyScope.myFunctionName('paramaters');'”。你当然可以像其他任何对象一样扩展'window'。 – rjz 2012-07-11 23:22:35

+0

我意识到你过了一段时间后,虽然:) – Onkelborg 2012-07-11 23:26:29

1

这是一个范围问题,您只需指定名称空间即可。在这种情况下,你说的是全球性的,所以我们将使用窗口。

window.myFunction = function() { ... stuff } 
1

要从全局范围内它需要被分配到一个全局变量访问它,要么通过声明它在您的文档之外准备好或者将其指定为window的属性:

var yourGlobalFunction1 = function() { ... } 

$(document).ready(function() { 
    function privateFunction() { ... } 

    window.yourGlobalFunction2 = function() { ... }; 

    yourGlobalFunction1(); 
    privateFunction(); 
    yourGlobalFunction2(); 
}); 

yourGlobalFunction1(); 

// and then at some later point AFTER the document ready has run, 
// e.g., in response to some event: 
$("#someelement").click(function() { 
    yourGlobalFunction2(); 
}); 
+1

呼吁在他的GlobalGunction2结束将不会工作 – Bergi 2012-07-11 22:56:05

+0

@Bergi - 好点,答案更新。 – nnnnnn 2012-07-11 22:58:55