2012-03-07 2 views
0

У меня есть функция, которая использует jQuery. Мне нужно динамически вставить jQuery с JavaScript и вернуть эту функцию этой функции. Я хотел бы сделать что-то вродеКак динамически загружать jQuery в функцию javascript, вызывать другую функцию и возвращать возвращаемое значение этой функции?

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

но onJQueryLoaded не имеет дозвонились во время цикла while.

Есть ли способ, чтобы моя базовая функция подождала, пока onJQueryLoaded не будет вызван до возвращения?

ответ

0

Попробуйте настроить таймер/интервал и проверить это. Это будет делать то, что вы ищете, в том, что касается выполнения обратного вызова, зависящего от времени (т. Е. Загрузки, рендеринга, загрузки, загрузки). Или просто поместите его внутри самого jQuery.

+0

Таймер просто вызовет другую функцию; Мне нужна исходная базовая функция, чтобы вернуть возвращаемое значение myJQueryFunction (или true). – cubetwo1729

0

вам нужно передать указатель на функцию myJQueryFunction().

Вы можете затем вызвать эту функцию в этом методе.

что-то вроде

function myJQueryFunction(funcPoint) { 
     funcPoint(); 
    } 

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

синтаксиса, возможно, потребуется немного больше смотреть в качестве вот только с верхней части моей головы.

Редактировать

Prob более релевантный сценарий как этого

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

...stuff...... 

function myJQueryFunction(funcPoint) { 
     funcPoint(); 
    } 

returnValue = myJQueryFunction(func); 

Подробнее редактировать

В соответствии мой комментарий ниже, если то, что вы хотите, чтобы огнь функции один раз JQuery (готово) вы хотите использовать функцию готовности JQuery

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

Jquery Ready()

+0

Это не отвечает на вопрос: он просто вызывает другую функцию для возвращаемого значения; Я спрашиваю, как ждать вызова 'myJQueryFunction'. – cubetwo1729

+0

вы не можете «подождать» до тех пор, пока функция не будет вызвана так, как вы просите. JQuery/JavaScript не является асикновым, он даже не скомпилирован, это язык сценариев и не поддерживает согласованность. – Liam

+0

wait mo ... вы хотите вызвать функцию после загрузки JQuery? Если это так, вы хотите $ (document) .ready (function() {....}); – Liam

Смежные вопросы