У меня есть некоторые функции 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 файлами? Они правильно включены и хорошо работают иначе.
Спасибо.
Проблема в том, что вы определяете sayHello
в анонимной функции, которая объявлена в этой строке:
$(document).ready(function()
В результате sayHello
имеет область видимости только эта функция.Если вы хотите вызвать sayHello
из любого другого места в вашем приложении, например из HTML на вашей странице или из другой строки в custom.js, вам нужно будет изменить custom.js и определить его вне вызова $ (документ) .ready
:
function sayHello()
{
alert("hello");
}
$(document).ready(function()
{
sayHello();
}