开发者

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开发者_StackOverflow社区(){  
    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?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜