Come tutti gli altri qui già fatto notare: utilizzare solo $().ready
quando sei la manipolazione DOM-Elements e la variabile non è accessibile perché hai utilizzato la parola chiave var
(come dovresti). La parola chiave var limita le variabili definite all'ambito corrente, che è l'ambito della funzione anonima che si utilizza come DOM-Ready-Handler.
Quindi, la rimozione del numero di telefono non necessario $().read
risolverà temporaneamente il problema.
MA (!) È necessario avvolgere il codice in una chiusura per evitare di compromettere l'ambito globale ed evitare possibili conflitti di denominazione con codice di terze parti.
Come quella:
notify.js
;(function ($, window, undefined) {
var notify = {
newNotification : function(text) {
return text;
}
};
})(jQuery, this);
script.js
;(function ($, window, undefined) {
alert(notify.newNotification());
})(jQuery, this);
Così, ora avranno lo stesso problema di prima, non si ha accesso al tuo oggetto.
Certo, potreste semplicemente aggiungere il vostro oggetto notify
all'ambito globale come suggerito da Arun P Johny nella sua risposta, ma sono abbastanza sicuro che nel tempo ci saranno più oggetti di cui avrete bisogno per renderli accessibili a livello globale. Se si inseriscono ognuno di essi nell'ambito globale, si inizia di nuovo a modificare l'ambito globale, quindi la mia raccomandazione sarebbe UNO oggetto globale che includerà tutti gli altri oggetti/variabili di cui si ha bisogno a livello globale. (O ancora meglio usare qualcosa di simile requirejs
somethink come questo:
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);
script.js
;(function ($, window, undefined) {
alert(MyApp.notify.newNotification());
})(jQuery, this);
alcune interessanti Q/A di circa portata e chiusure qui su StackOverflow:
una buona risposta circa fare in giro con la ambito globale:
Perché si definisce 'notify' in un' $ .ready' portata? Solo perché "vuoi usare jQuery", DOM ready non è necessario. – Bergi
Sembra un uso non corretto di jQuery. @Redstone Kit, che cosa esattamente vuoi raggiungere? – stavarotti
http://stackoverflow.com/questions/111102/how-do-javascript-closures-work – porfiriopartida