Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to call a function within $(document).ready from outside it

How do you call function lol() from outside the $(document).ready() for example:

$(document).ready(function(){  
  function lol(){  
    alert('lol');  
  }  
});  

Tried:

$(document).ready(function(){
  lol();
});

And simply:

lol();

It must be called within an outside javascript like:

function dostuff(url){
  lol(); // call the function lol() thats inside the $(document).ready()
}
like image 678
Marcus Showalter Avatar asked Mar 04 '10 13:03

Marcus Showalter


4 Answers

Define the function on the window object to make it global from within another function scope:

$(document).ready(function(){  
  window.lol = function(){  
    alert('lol');  
  }  
});
like image 136
nicerobot Avatar answered Nov 02 '22 23:11

nicerobot


Outside of the block that function is defined in, it is out of scope and you won't be able to call it.

There is however no need to define the function there. Why not simply:

function lol() {
  alert("lol");
}

$(function() {
  lol(); //works
});

function dostuff(url) {
  lol(); // also works
}

You could define the function globally like this:

$(function() {
  lol = function() {
     alert("lol");
  };
});
$(function() {
  lol();
});

That works but not recommended. If you're going to define something in the global namespace you should use the first method.

like image 32
cletus Avatar answered Nov 02 '22 21:11

cletus


You don't need and of that - If a function is defined outside of Document.Ready - but you want to call in it Document.Ready - this is how you do it - these answer led me in the wrong direction, don't type function again, just the name of the function.

      $(document).ready(function () {
     fnGetContent();
      });

Where fnGetContent is here:

       function fnGetContent(keyword) {
            var NewKeyword = keyword.tag;
            var type = keyword.type;
            $.ajax({ .......
like image 3
Scott Selby Avatar answered Nov 02 '22 23:11

Scott Selby


Short version: you can't, it's out of scope. Define your method like this so it's available:

function lol(){ 
  alert('lol'); 
} 

$(function(){
  lol();
});
like image 2
Nick Craver Avatar answered Nov 02 '22 23:11

Nick Craver