Как вызвать функцию в $ (document). Уже снаружи - PullRequest
30 голосов
/ 04 марта 2010

Как вы вызываете функцию lol () снаружи $ (document) .ready (), например:

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

Ответы [ 5 ]

56 голосов
/ 04 марта 2010

Определите функцию для объекта окна, чтобы сделать его глобальным из другой области действия функции:

$(document).ready(function(){  
  window.lol = function(){  
    alert('lol');  
  }  
});
37 голосов
/ 04 марта 2010

За пределами блока, в котором определена функция, она находится вне области видимости, и вы не сможете ее вызвать.

Однако здесь нет необходимости определять функцию. Почему бы просто:

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

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

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

Вы могли бы определить глобальную функцию следующим образом:

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

Это работает, но не рекомендуется. Если вы собираетесь определить что-то в глобальном пространстве имен, вам следует использовать первый метод.

3 голосов
/ 16 июня 2012

Вам не нужно и этого - если функция определена за пределами Document.Ready - но вы хотите вызвать в ней Document.Ready - это то, как вы это делаете - эти ответы привели меня в неверном направлении не вводите функцию снова, только имя функции.

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

Где fnGetContent находится здесь:

       function fnGetContent(keyword) {
            var NewKeyword = keyword.tag;
            var type = keyword.type;
            $.ajax({ .......
3 голосов
/ 04 марта 2010

Короткая версия: вы не можете, это выходит за рамки. Определите свой метод следующим образом:

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

$(function(){
  lol();
});
0 голосов
/ 22 ноября 2010

А как насчет случая, когда Prototype установлен с jQuery и у нас установлены noconflicts для jQuery?

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

Теперь мы можем вызывать lol из любого места, но мы ввели конфликт с Prototype?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...