2012-03-07 3 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'의 반환 값 (또는 참)을 반환하는 원래의 기본 함수가 필요합니다. – cubetwo1729

0

myJQueryFunction()에 함수 포인터를 전달해야합니다.

그런 다음이 메서드 내에서 해당 함수를 호출 할 수 있습니다.

function myJQueryFunction(funcPoint) { 
     funcPoint(); 
    } 

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

구문과 같은

뭔가 조금 더 내 머리 위로 떨어져 그게 전부로에보고해야 할 수도 있습니다.

편집

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

...stuff...... 

function myJQueryFunction(funcPoint) { 
     funcPoint(); 
    } 

returnValue = myJQueryFunction(func); 

더 편집 아래에있는 내 의견으로 당

같은 시나리오는, 당신이 원하는 경우 JQuery와 한 번 기능을 발사하는 것입니다 관련성 PROB JQuery 준비 함수를 사용하기 위해로드 (준비)되었습니다.

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

Jquery Ready()

+0

이것은 질문에 답하지 않습니다. 반환 값에 대해 다른 함수를 호출합니다. myJQueryFunction이 호출 될 때까지 기다리는 방법을 묻는다. – cubetwo1729

+0

당신이 요청하는 방식으로 함수가 호출 될 때까지 "대기"할 수 없습니다. Jquery/JavaScript는 asycronous가 아니며 컴파일 된 것도 아니며 스크립팅 언어이며 concurency를 지원하지 않습니다. – Liam

+0

기다려라 ... JQuery가로드 된 후에 함수를 호출하겠습니까? 그렇다면 $ (document) .ready (function() {....}); – Liam

관련 문제