2011-03-11 7 views
7

Mi código jquery es dividido y el archivo está dividido en 2 archivos.compartiendo funciones js entre código en 2 archivos

En uno de los archivos, que definen una función

function something(input){ 
    //does something 
} 

llamar a esta función sólo funciona cuando la línea que llama está en el mismo archivo. Pero necesito llamarlo desde ambos archivos.

Si cambio la función al segundo archivo, de nuevo aparece el mismo problema. El código en el mismo archivo puede leerlo, pero no el código en el otro archivo.

Respuesta

9

Hagan sus funciones fuera de $(document).ready(function() { }); para darles alcance mundial. No se puede acceder a nada dentro de él desde el exterior.

A continuación, puede analizar el uso de un espacio de nombres para encapsular sus funciones. Esto ayuda a evitar el desorden del espacio de nombres global.

4

Necesita crear un objeto de espacio de nombres , que se comparte entre sus archivos.

fileA.js

window.mynamespace = window.mynamespace || {}; 

mynamespace.something = function(input) { 
    // do something 
}; 

fileB.js

window.mynamespace = window.mynamespace || {}; 

mynamespace.something(); 
+0

Estoy usando JQuery y cada uno de mis archivos comienza así. ¿Dónde pongo el espacio de nombres? Afuera o dentro del documento listo? '$ (document) .ready (function() { \t });' – sami

+0

@sami: establecer o recibir ese objeto debe ser lo primero que ocurra en cada uno de sus archivos. Además, esta es una versión simplificada. Puede crear soluciones mucho más complejas para este problema. – jAndy

+0

Acepto que esta es la mejor solución. También hubo algunos experimentos con la exportación/importación en JavaScript ([ver esta página] (http://hatayservices.com/books/Javascript/JavaScriptStatements.html#stmtexport)) pero guardando los objetos/objetos de un objeto global (como la ventana) es la MEJOR manera ... – Tokimon

Cuestiones relacionadas