Jquery: вызов функций из разных документов - PullRequest
16 голосов
/ 17 апреля 2010

У меня есть некоторые функции Jquery, которые я храню в файле "custom.js". На некоторых страницах мне нужно передать переменные PHP в Jquery, поэтому некоторые биты Jquery должны оставаться в документах HTML. Тем не менее, поскольку я сейчас пытаюсь реорганизовать вещи до минимума, я запутался в следующем:

Если я положу это в свой custom.js:

$(document).ready(function()
{
   function sayHello() {
      alert("hello");
   }
}

И это в HTML-документе:

<script type="text/javascript">
   $(document).ready(function()
   {
      sayHello();
   });
</script>

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

Есть ли какое-то публичное свойство, которое мне нужно объявить для функции, или как мне получить функции Jquery в моем HTML для взаимодействия с внешними файлами .js? Они правильно включены и работают нормально в противном случае.

Спасибо.

Ответы [ 2 ]

29 голосов
/ 17 апреля 2010

Проблема в том, что вы определяете sayHello в анонимной функции, объявленной в этой строке:

$(document).ready(function()

В результате, sayHello распространяется только на эту функцию. Если вы хотите вызвать sayHello из любого другого места в вашем приложении, такого как HTML на вашей странице или другая строка в custom.js, вам нужно будет изменить custom.js и определить его вне вызова на $(document).ready:

function sayHello()
{
   alert("hello");
}

$(document).ready(function()
{
   sayHello();
}
7 голосов
/ 15 ноября 2012

просто сделайте функцию глобальной переменной

sayHello=function() {
    alert("hello");
}
...