Or: $(function() { window.say_something = function(word) { alert(word); }; });
--Klaus On Apr 27, 11:24 pm, "Karl Rudd" <[EMAIL PROTECTED]> wrote: > var say_something; > > $(document).ready(function(){ > say_something = function(word){ > alert(word); > } > > }); > > Karl Rudd > > On Mon, Apr 28, 2008 at 6:01 AM, Yuval <[EMAIL PROTECTED]> wrote: > > > Hey Mike, > > Thanks a lot for your explanation! > > Say I insisted on defining it within the $(document).ready function, > > how would I access a function that is located inside another function? > > Thank you, > > Yuval > > > On Apr 27, 12:37 am, "Michael Geary" <[EMAIL PROTECTED]> wrote: > > > Hi Yuval, > > > > It looks like you've solved the problem, and your solution is correct. > > > > The reason you didn't find any jQuery-specific information about this is > > > that it isn't a jQuery problem at all. It's a matter of JavaScript > > scoping. > > > > Your say_something function is defined inside another function, therefore > > > the name "say_something" is local to that outer function and not > > available > > > outside it. > > > > You'd have exactly the same problem if settings.js looked like this: > > > > function foobar() { > > > function say_something(word){ > > > alert(word); > > > } > > > > } > > > > There is no need for your say_something() definition to be located > > inside a > > > $(document).ready() callback function. By defining it directly at the top > > > level (not inside another function), you make it available globally, > > which > > > is just what you need: > > > > function say_something(word){ > > > alert(word); > > > > } > > > > -Mike > > > > > From: Yuval > > > > > Hey Guys, > > > > I have 2 files. index.html and settings.js > > > > > inside settings.js: > > > > > $(document).ready(function(){ > > > > function say_something(word){ > > > > alert(word); > > > > } > > > > }) > > > > > inside index.html > > > > > <script language="javascript"> > > > > $(document).ready(function(){ > > > > say_something("hello"); > > > > }); > > > > </script> > > > > > I am using Firefox 2 with Firebug and it claims the function > > > > is not defined. The code does not work. > > > > So why is this a jQuery problem, you ask? > > > > Well, if I remove the $(document).ready call from the > > > > external file, everything works fine! > > > > > this is what it looks like when it works: > > > > > inside settings.js: > > > > > // no $(document).ready call > > > > function say_something(word){ > > > > alert(word); > > > > } > > > > > inside index.html > > > > > <script language="javascript"> > > > > $(document).ready(function(){ > > > > say_something("hello"); > > > > }); > > > > </script> > > > > > I've been searching Google and the forum for almost 2 hours > > > > now with no answer to why this does not work with > > > > $(document).ready. Any ideas? > > > > Thank you, > > > > Yuval > > > > > p.s. replacing <script language="javascript"> with <script > > > > language="text/javascript"> simply suppresses the error, it > > > > does not solve the problem.