2010-04-17 3 views
16

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

Если я кладу это в моем custom.js:

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

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

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

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

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

Спасибо.

ответ

29

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

$(document).ready(function() 

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

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

$(document).ready(function() 
{ 
    sayHello(); 
} 
+0

спасибо - конечно, имеет смысл. Примите ваш ответ, нужно подождать предельного срока. – Tom

7

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

sayHello=function() { 
    alert("hello"); 
} 
+0

будет ли работать с контейнером jquery как var? Как 'sayHello = $ (document) .ready (function() {...' – tim

Смежные вопросы