вызов функции jQuery - PullRequest
       22

вызов функции jQuery

1 голос
/ 18 июня 2009

Я пытаюсь вызвать функцию обратного вызова внутри $ (document) .ready (..)

Как мне вызвать функцию извне?

Как например:

$(document).ready( function(foo) {
   var bar = function() { ... };
});

// How do I call bar() from here?

Ответы [ 5 ]

5 голосов
/ 18 июня 2009

Это зависит от того, как вы хотите охватить вещи. Если вы просто хотите, чтобы bar находился в глобальной области видимости, просто сделайте это:

$(document).ready( function(foo) {
   var bar = function() { ... };
   window.bar = bar;
});

Помните, что в JavaScript единственными блоками кода, имеющими область видимости, являются функции, поэтому переменные, объявленные в if{}, while{} и других типах блоков кода, являются глобальными для любой функции, частью которой они являются, если они не являются таковыми. объявлен.

Если вы используете переменную без ее объявления, это то же самое, что и:

// Both of these variables have global scope, assuming
// 'bar' was never declared anywhere above this
window.foo = "Hello World!";
bar = "Hello World!";

Таким образом, приведенный выше пример можно сократить на строку, выполнив:

$(document).ready( function(foo) {
   window.bar = function() { ... };
});
2 голосов
/ 18 июня 2009

Не объявляйте все внутри функции готовности

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

function bar() {
  ...
}
0 голосов
/ 18 июня 2009

После прочтения вашего комментария, возможно, вы захотите сделать что-то подобное. Используйте myUtilities, чтобы минимизировать глобальное загрязнение пространства имен, если вы хотите получить доступ к вещам внутри и снаружи вашего ready.

var myUtilities={};

$(document).ready( function(foo) {
   myUtilities.bar = function() { ... };
});

// How do I call bar() from here?
a = myUtilities.bar();

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

0 голосов
/ 18 июня 2009

Если вы хотите вызвать bar() извне, почему бы вам просто не объявить его снаружи, передав ему все необходимые параметры из внутренней области видимости?

function bar(baz, qix) { ...};

$(document).ready(function(foo) {
        bar(whatever, whatnot);
        });
bar(something, else);
0 голосов
/ 18 июня 2009

Вы можете объявить bar вне вашей функции готовности. Тогда это будет глобально.

var bar;

$(document).ready( function(foo) {
   bar = function() { ... };
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...