Marcus Showalter
Marcus Showalter

Reputation: 911

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()
}

Upvotes: 34

Views: 99387

Answers (5)

Scott Selby
Scott Selby

Reputation: 9570

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({ .......

Upvotes: 3

Bob Brunius
Bob Brunius

Reputation: 1380

What about the case where Prototype is installed with jQuery and we have noconflicts set for jQuery?

jQuery(document).ready(function($){  
     window.lol = function(){  
          $.('#funnyThat').html("LOL");
     }  
});

Now we can call lol from anywhere but did we introduce a conflict with Prototype?

Upvotes: 0

nicerobot
nicerobot

Reputation: 9235

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

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

Upvotes: 70

Nick Craver
Nick Craver

Reputation: 630409

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();
});

Upvotes: 2

cletus
cletus

Reputation: 625077

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.

Upvotes: 37

Related Questions