2012-06-08 19 views
6

Tengo el siguiente código.Diferencia entre `.click (controlador())` y `.click (controlador)`

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
    <script type="text/javascript" src="jquery-1.4.2.min.js" ></script> 
    <script type="text/javascript"> 
    function myFun() 
    { 
     alert(5) 
    } 
     $(document).ready(function(){ 
      $("#myID").click(myFun()); 
     }) 
    </script> 
</head> 

<body> 
    <input type="button" value="Click it" id="myID" /> 
</body> 
</html> 

Cuando ejecuto el código a continuación alert(5) viene cuando se carga la página. Si escribo

$("#myID").click(myFun) 

entonces la alerta solo aparece cuando hacemos clic en el botón. ¿Por qué se comporta así?

+0

https: //developer.mozilla .org/es/JavaScript/Guide/Las funciones pueden ser útiles para comprender mejor las funciones. –

Respuesta

10
$("#myID").click(myFun()); 

Esto exige myFun() y trata de instalar lo que devuelve como un controlador de eventos. Como no devuelve nada, en realidad está activando haciendo clic en #myID.

+1

@Lanzz ... si ve mi pregunta completa, también llamé a la función como mencionó. Pero, cuál es la diferencia. Supongamos que si quiero pasar algún argumento, ¿cómo hacerlo? – Searcher

+1

'$ (" # myID "). Haga clic en (función() {myFun (algunos, argumentos)});' – lanzz

+1

cuando pasa la función() significa que tiene la intención de llamar a ese método, si no lo hace, entonces se invocará solo cuando se active el evento de hecho clic. – mprabhat

3

Lea esto .click() - Enlace un controlador de eventos al evento click JavaScript, o active ese evento en un elemento que use JavaScript.

sólo tiene que escribir $("#myID").click(myFun); en lugar de $("#myID").click(myFun()); porque cuando se escribe myFun() en su código de la función se invoca inmediatamente (en lugar de cuando un evento de clic incendios en #myID).

Working Demo

2

probar este para el funcionamiento de la función en el evento click:

function myFun(){ 
    alert(5); 
} 

$(document).ready(function(){ 
    $("#myID").click(function(){ 
     myFun(); 
    }); 
}) 
2

Prueba esto:

Esto funcionará

$(document).ready(function() { 
    function myFun() { 
     alert(5) 
    } 
      $("#myID").click(function(){ 
      myFun(); 
      }); 
});​ 
Cuestiones relacionadas