Как сделать функции $ (document) .ready () доступными во всем мире? - PullRequest
5 голосов
/ 12 марта 2010

У меня есть интересный вопрос, который может показаться довольно глупым, но здесь идет. Используя функцию готовности JQuery, я определил некоторые функции следующим образом:

$(function(){

  var function1 = function(data){
    //do something
  }

  var function2 = function(data){
    //do something else
  }
});

По какой-то причине, чтобы IE правильно отображал то, что я использую, это нужно сделать в функции $ (document) .ready (). Однако мне нужно запустить эти функции, как только у меня будет набор данных со стороны сервера. Поэтому я думал, что сделаю что-то вроде этого ...

Object.Namespace.callFunction = function(data){
 function1(data);
}

... для размещения вне функции ready в скрипте, чтобы я мог вызывать ее напрямую.

К сожалению, я знаю, что это не работает, потому что ну, это не кажется логичным, и я попробовал! Я сделал все эти функции произвольными, потому что это не имеет значения содержание, а скорее концепция. Я также пытался использовать обработчики событий для запуска функции после получения этих данных - безрезультатно! Каков наилучший способ сделать функции внутри $ (document) .ready () глобальными?

Ответы [ 3 ]

6 голосов
/ 12 марта 2010

Если вы (по стилистическим причинам) хотите написать функцию, встроенную в ваш $ (документ) .ready, вы можете сделать это следующим образом:

var app={}; /*Use whatever your apps name is, abbreviated (something short)*/
$(function()
{
  app.function1 = function(data) { };
  app.function2 = function(data) { };
  // now you can call all functions inside and outside this ready function with the app. prefix
  // if you also want a local reference to the function without the app. prefix, you can do:
  var function1 = app.function1 = function(data) { };
});
6 голосов
/ 12 марта 2010

Если вы определяете глобальные функции, то нет смысла иметь их в документе готовыми. Единственное, что должно быть в документе готово, это то, что нужно ждать, пока документ не будет готов , чтобы действовать Определение функции может произойти до того, как документ будет готов.

// Defining the functions in the global scope.
var function1 = function(data){
    //do something that requires the dom to be ready.
}

var function2 = function(data){
    //do something else that requires the dom to be ready.
}
$(function() {
    // Running the functions when the document is ready.
    function1();
    function2();
});
3 голосов
/ 12 марта 2010

а как же

  function function1(data){
    //do something
  }
  function function2(data){
    //do something else
  }

   $(function(){
      // if you need to call inside ready
      function1();
      function2();
   });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...