web-dev-qa-db-ja.com

外部から$(document).ready内の関数を呼び出す方法

たとえば、$(document).ready()の外部から関数lol()を呼び出すには:

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

試した:

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

そして単純に:

lol();

次のような外部javascript内で呼び出す必要があります。

function dostuff(url){
  lol(); // call the function lol() thats inside the $(document).ready()
}
31

別の関数スコープ内からグローバルにするために、ウィンドウオブジェクトで関数を定義します。

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

関数が定義されているブロックの外では、スコープ外にあり、呼び出すことはできません。

ただし、そこで関数を定義する必要はありません。なぜ単純ではない:

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

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

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

couldこのようにグローバルに関数を定義します:

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

それは機能しますが、推奨されません。グローバル名前空間で何かを定義する場合は、最初の方法を使用する必要があります。

37
cletus

あなたはそれを必要としません-Document.Readyの外で関数が定義されている場合-しかし、それをDocument.Readyで呼び出したい場合-これがあなたのやり方です-これらの答えは私を間違った方向に導きました、しないでください関数の名前のみを入力します。

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

FnGetContentの場所:

       function fnGetContent(keyword) {
            var NewKeyword = keyword.tag;
            var type = keyword.type;
            $.ajax({ .......
3
Scott Selby

ショートバージョン:できません。範囲外です。次のようにメソッドを定義して、利用できるようにします。

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

$(function(){
  lol();
});
2
Nick Craver

PrototypeがjQueryと共にインストールされ、jQueryに競合が設定されていない場合はどうですか?

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

これでどこからでもlolを呼び出すことができますが、Prototypeとの競合が発生しましたか?

0
Bob Brunius