2012-07-11 59 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