2012-03-07 7 views
0

私はjQueryを使用する関数を持っています。 JavaScriptでjQueryを動的に挿入し、その関数がその関数の戻り値を返すようにする必要があります。私はjavascript関数で動的にjQueryをロードし、別の関数を呼び出し、その関数の戻り値を返す方法はありますか?

(function(){ 
    var jQueryLoaded = false; 
    var returnValue; 
    if (!window.jQuery) { 
     var script = document.createElement('script'); 
     script.type = 'text/javascript'; 
     script.src = 'http://code.jquery.com/jquery-1.7.1.min.js'; 
     script.onreadystatechange= function() { 
      if (this.readyState == 'loaded' || this.readyState == 'complete') 
       onJQueryLoaded(); 
     }; 
     script.onload = onJQueryLoaded; 
     document.getElementsByTagName('head')[0].appendChild(script); 
    } 
    else { 
     returnValue = myJQueryFunction(); 
     if (typeof(returnValue) == 'undefined') 
      returnValue = true; 
     return returnValue; 
    } 
    function myJQueryFunction() { 
     // do something 
    } 
    function onJQueryLoaded() { 
     if (jQueryLoaded) 
      return; 
     jQueryLoaded = true; 
     var $ = jQuery; 
     returnValue = myJQueryFunction(); 
     if (typeof(returnValue) == 'undefined') 
      returnValue = true; 
    } 
    while (typeof(returnValue) == 'undefined'); // wait until onJQueryLoaded returns 
    return returnValue; 
})(); 

ような何かをしたいと思いますが、whileループ中にonJQueryLoaded呼び出されません。

戻す前にonJQueryLoadedが呼び出されるまで、自分のベース関数を待機させる方法はありますか?

答えて

0

タイマー/インターバルを設定し、それを確認してみてください。これは、時間に依存するコールバック(つまり、何かの読み込み、レンダリング、ダウンロード、アップロード)を実行する限り、探していることをします。 jQueryの内部に配置するだけです。

+0

タイマはちょうど別の関数を呼び出します。 'myJQueryFunction'の戻り値を返すための元の基本関数が必要です(またはtrue)。 – cubetwo1729

0

myJQueryFunction()に関数ポインタを渡す必要があります。

このメソッドでこの関数を呼び出すことができます。

何か

function myJQueryFunction(funcPoint) { 
     funcPoint(); 
    } 

returnValue = myJQueryFunction(function() {return true;}); 

ような構文はちょうど私の頭の上からthatsのように探してもう少し必要になる場合があります。

編集

この

var func = function() {return true;}; 

...stuff...... 

function myJQueryFunction(funcPoint) { 
     funcPoint(); 
    } 

returnValue = myJQueryFunction(func); 

その他の編集以下の私のコメントを1として

のようなシナリオは、あなたが望む場合は、jQueryのかつての機能を発射することでより多くの関連度Prob JQueryの準備ができた機能を使用するために、ロードされている(準備完了)。

$(document).ready(function() {do you stuff here}); 

Jquery Ready()

+0

これは疑問に答えるものではありません。戻り値として別の関数を呼び出すだけです。私は 'myJQueryFunction'が呼び出されるまで待つ方法を尋ねています。 – cubetwo1729

+0

あなたはあなたの質問の仕方で関数が呼び出されるまで「待つ」ことはできません。 Jquery/JavaScriptは非同期ではなく、スクリプト言語でもコンパイルされていないため、concurencyをサポートしていません。 – Liam

+0

待ちに待った... JQueryの読み込み後に関数を呼びたいのですか?もしそうなら、$(document).ready(function(){....})が必要です。 – Liam

関連する問題