2010-04-17 123 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