2010-07-02 34 views
5
$(document).ready(SetupButtonClicks()); 

function SetupButtonClicks() { 
    $('#btnJavaPHP').click(DoPHPStuff()); 
} 

function DoPHPStuff() { 
    //stuff 
} 

Tengo este código en mi archivo javascript, cuando lo depuro lo veo llamar al SetupButtonClicks() como debería pero después de hacerlo, llama al DoPHPStuff(). DoPHPStuff() solo debe llamarse cuando se hace clic en btnJavaPHP. ¿Qué estoy haciendo mal?¿Por qué esta función javascript se ejecuta sin ser llamada?

Respuesta

17

Cambiar su función SetupButtonClicks:

$('#btnJavaPHP').click(DoHPStuff); 

La forma en que lo tienes codificado, usted está diciendo que Javascript llamada a la función, no para uso como el manejador de "clic". Los paréntesis son un operador que hace que se llame a una función.

+0

Gracias, eso lo solucionó. – jamone

+2

@jamone estás $ (documento) .ready probablemente todavía esté equivocado ... asegúrate de cambiar eso también. – galambalazs

+0

@galambalazs sí, he arreglado la línea $ (documento) .ready al mismo tiempo. Gracias – jamone

3

Quitar ().

Al escribir $(document).ready(SetupButtonClicks()), que están llamando SetupButtonClicks y pasando su valor de retorno a ready.
Del mismo modo, al escribir $('#btnJavaPHP').click(DoPHPStuff()), usted es llamando alDoPHPStuff (inmediatamente) y pasando lo que devuelva a click().

Debe pasar las funciones escribiendo $(document).ready(SetupButtonClicks) y $('#btnJavaPHP').click(DoPHPStuff).

3
function DoPHPStuff() { 
    //stuff 
} 

function SetupButtonClicks() { 
    $('#btnJavaPHP').click(DoPHPStuff); 
} 

$(document).ready(SetupButtonClicks);  
2

Con la excepción de una declaración de función, un par de paréntesis que siguen el identificador de una función hace que la función se ejecute. Ejemplos:

// function declaration; function not executed 
function SetupButtonClicks() { 

} 

// function executed 
SetupButtonClicks(); 

// function not executed 
SetupButtonClicks; 
Cuestiones relacionadas