2009-02-25 6 views
30

no he encontrado una buena referencia para declarar mis propias funciones dentro de la
mejores prácticas para declarar funciones dentro de la función jQuery listo

jquery.ready(function(){}); 

quiero declarar lo que son dentro del mismo ámbito de aplicación de la lista cierre. No quiero saturar el espacio de nombres js global, así que no quiero que se declaren fuera del cierre listo porque serán específicos solo del código interno.

Entonces, ¿cómo declarar una función de este tipo ... y no me refiero a un método de extensión de jQuery a medida/función ... sólo una 'función ol regular que hace algo trivial como dicen:

function multiple(a, b){ 
    return a * b; 
} 

Quiero seguir la recomendación de jquery y la sintaxis de declaración de función. Puedo hacerlo funcionar simplemente declarando una función como la multiplicada arriba ... pero no me parece correcta por alguna razón, así que supongo que solo necesito una guía.

Respuesta

53

creo que estaría bien acaba de declarar la función en el interior del cierre de listas(), pero aquí puede ser un poco más explícito sobre el alcance local de:

jQuery.ready(function() { 

    var myFunc = function() { 

      // do some stuff here 

    }; 

    myFunc(); 


}); 
+0

Bingo, esto es lo que estaba buscando porque es más claro sobre el alcance de la función y sigue mejor la sintaxis de jquery. Gracias por esta respuesta –

+4

Lo siento si es un comentario estúpido, pero esta respuesta me confunde. ¿No debería la función invocar más bien ser "myFunc();" en lugar de "myFunction();" ? –

9

Puede sonar simple pero solo ... declara la función. Javascript permite que las funciones tengan funciones internas.

$(document).ready(function() { 
    alert("hello! document is ready!"); 

    function multiply(a, b) { 
     return a * b; 
    } 

    alert("3 times 5 is " + multiply(3, 5)); 
}); 
7

tengo una startup función, y lo uso como impresos abajo:

function StartUp(runnable) 
{ 
    $(document).ready(runnable.run); 
} 

var ExternalLinks = 
{ 
    run: function() 
    { 
     $('a[rel="external"]').bind('click', ExternalLinks.click); 
    }, 
    click: function(event) 
    { 
     open(this.href); 
     return false; 
    } 
} 
StartUp(ExternalLinks); 

var ConfirmLinks = 
{ 
    run: function() 
    { 
     $('a.confirm').bind('click', ConfirmLinks.click); 
    }, 
    click: function(event) 
    { 
     if (!confirm(this.title)) { 
      return false; 
     } 
    } 
} 
StartUp(ConfirmLinks); 

Mis sitios web son modulares, por lo que cada módulo tiene acciones N y cada acción puede tener un archivo .js, por lo que acaba de escribir y llamar a la función con el arranque (...F unctionName ...)

Cuestiones relacionadas