2010-04-17 51 views
16

我有一些Jquery函數,我保留在「custom.js」文件中。在一些頁面上,我需要將PHP變量傳遞給Jquery,因此一些Jquery位需要保留在HTML文檔中。然而,正如我現在正在試圖重構的東西到最小,我絆倒了以下內容:Jquery:從不同文檔調用函數

如果我把這個在我的custom.js:

$(document).ready(function() 
{ 
    function sayHello() { 
     alert("hello"); 
    } 
} 

這一個HTML文檔中:

<script type="text/javascript"> 
    $(document).ready(function() 
    { 
     sayHello(); 
    }); 
</script> 

...函數沒有被調用。但是,如果兩者都放在HTML文檔中,則該函數可以正常工作。

是否需要爲函數聲明某種公共屬性,或者如何在我的HTML中獲取JQuery函數以與外部.js文件進行交談?它們被正確包括在內,否則工作正常。

謝謝。

回答

29

的問題是你定義sayHello即該線路上聲明的匿名函數中:

$(document).ready(function() 

結果,sayHello屬性的範圍僅該功能。如果您希望在應用程序調用sayHello從其他地方,比如你的頁面上的HTML或custom.js另一條線,則需要改變custom.js並將它定義外呼到$(document).ready

function sayHello() 
{ 
    alert("hello"); 
} 

$(document).ready(function() 
{ 
    sayHello(); 
} 
+0

感謝 - 當然,是非常合情合理的。會接受你的答案,需要等待時間限制。 – Tom 2010-04-17 01:38:12

7

只是讓功能的全局變量

sayHello=function() { 
    alert("hello"); 
} 
+0

它會工作將jquery容器設置爲var嗎?像'sayHello = $(document).ready(function(){...' – tim 2012-11-29 20:45:42