jak wszyscy tutaj już zauważył: Należy używać tylko $().ready
gdy jesteś obsługi DOM-elementów i nie jest zmienna dostępne, ponieważ użyłeś słowa kluczowego var
(jak powinieneś). Słowo kluczowe var ogranicza zdefiniowane zmienne do bieżącego zakresu, który jest zakresem anonimowej funkcji używanej jako obiekt obsługi DOM-Ready.
Usunięcie niepotrzebnego $().read
tymczasowo rozwiąże problem.
ALE (!) Powinieneś zawinąć swój kod do zamknięć, aby uniknąć bałaganu w zasięgu globalnym i uniknąć możliwych konfliktów nazw z kodem firm trzecich.
tak:
notify.js
;(function ($, window, undefined) {
var notify = {
newNotification : function(text) {
return text;
}
};
})(jQuery, this);
script.js
;(function ($, window, undefined) {
alert(notify.newNotification());
})(jQuery, this);
Więc teraz będziesz miał ten sam problem jak wcześniej, nie masz dostępu do twojego obiektu.
Pewnie możesz dodać swój obiekt notify
do globalnego zasięgu, jak sugerował Arun P Johny w swojej odpowiedzi, ale jestem pewien, że z czasem będzie więcej obiektów, których potrzebujesz do globalnej dostępności. Jeśli umieścisz każdą z nich w zasięgu globalnym, zaczniesz ponownie mieszać zasięg globalny, więc moja rekomendacja będzie JEDNYM globalnym obiektem, który będzie przechowywał wszystkie inne obiekty/zmienne, których potrzebujesz na całym świecie. (Lub nawet lepiej użyć czegoś podobnego requirejs
somethink tak:
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);
skryptu.js
;(function ($, window, undefined) {
alert(MyApp.notify.newNotification());
})(jQuery, this);
Niektóre interesujące Q/A chodzi o zakres i zamknięć tutaj na stackoverflow:
dobra odpowiedź o aprowizacji z Zakres globalny:
Dlaczego zdefiniować 'notyfikować w' $ .ready' zakresie? Tylko dlatego, że "chcesz używać jQuery", DOM gotowy nie jest potrzebny. – Bergi
To wydaje się nieprawidłowe korzystanie z jQuery. @Redstone Kit, co dokładnie chcesz osiągnąć? – stavarotti
http://stackoverflow.com/questions/111102/how-do-javascript-closures-work – porfiriopartida