简体   繁体   中英

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

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

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

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.

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

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

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?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM