Как и все остальные здесь уже указывались: использовать только $().ready
, когда вы обработку DOM-элементы и ваш переменный не потому что вы использовали ключевое слово var
(как и предполагалось). Ключевое слово var ограничивает определенные переменные текущей областью, которая является областью анонимной функции, которую вы используете в качестве DOM-Ready-Handler.
Таким образом, удаление ненужного $().read
будет временно решить вашу проблему.
BUT (!), Вы должны обернуть свой код в блокировки, чтобы избежать испорчения глобальной области и избежать возможных конфликтов имен с сторонним кодом.
Как что:
notify.js
;(function ($, window, undefined) {
var notify = {
newNotification : function(text) {
return text;
}
};
})(jQuery, this);
script.js
;(function ($, window, undefined) {
alert(notify.newNotification());
})(jQuery, this);
Итак, теперь вы будете иметь те же проблемы, как и прежде, вы не имеете доступа к вашему объекту.
Уверенный, что вы можете просто добавить свой объект notify
в глобальную область действия, как предложил Арун П. Джонни в своем ответе, но я уверен, что в течение более длительного времени вам будет необходимо сделать глобальный доступ. Если вы поместили каждый из них в глобальную область видимости, вы снова начнете заполнять глобальную область, поэтому моя рекомендация будет ОДНОМ глобальным объектом, который будет содержать все другие объекты/переменные, которые вам нужны глобально. (Или еще лучше использовать что-то вроде requirejs
Somethink так:
main.js
;var MyApp = {}; # Only variable in global scope
# Maybe some more initalization code here, dunno
notify.js
;(function ($, window, undefined) {
MyApp.notify = {
newNotification : function(text) {
return text;
}
};
})(jQuery, this);
сценария.JS
;(function ($, window, undefined) {
alert(MyApp.notify.newNotification());
})(jQuery, this);
Некоторые интересные Q/A вот-вот объем и закрытие здесь на StackOverflow:
Хороший ответ о возни с глобальный охват:
Почему вы определили 'notify' в' $ .ready' объем? Просто потому, что вы «хотите использовать jQuery», DOM ready не требуется. – Bergi
Это похоже на неправильное использование jQuery. @Redstone Kit, чего именно вы хотите достичь? – stavarotti
http://stackoverflow.com/questions/111102/how-do-javascript-closures-work – porfiriopartida