2012-06-08 39 views
6

Ho il seguente codice.Differenza tra `.click (handler())` e `.click (gestore)`

<!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> 

Quando ho eseguito questo codice allora alert(5) viene in cui la pagina viene caricata. Se scrivo

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

quindi l'avviso appare solo quando si fa clic sul pulsante. Perché si comporta in questo modo?

+0

https: //developer.mozilla .org/it/JavaScript/Guida/Le funzioni potrebbero essere utili per comprendere meglio le funzioni. –

risposta

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

Ciò richiede myFun() e cerca di installare qualunque essa ritorna come un gestore di eventi. Dal momento che non sta restituendo nulla, in realtà sei attivando il clic su #myID.

+1

@Lanzz .. se vedi la mia intera domanda, ho anche chiamato la funzione come hai menzionato. Ma qual è la differenza. Supponiamo che se voglio passare qualsiasi argomento allora come farlo? – Searcher

+1

'$ (" # myID "). Click (function() {myFun (some, arguments)});' – lanzz

+1

quando si passa la funzione() significa che si intende chiamare quel metodo, se non lo si fa allora verrà chiamato solo quando viene effettivamente attivato l'evento click. – mprabhat

3

Leggere questo .click() - Associare un gestore di eventi all'evento JavaScript click o attivare quell'evento su un elemento utilizzando JavaScript.

Hai solo bisogno di scrivere $("#myID").click(myFun); invece di $("#myID").click(myFun()); perché quando si scrive myFun() nel codice della funzione viene richiamata immediatamente (piuttosto che quando un incendio click evento su #myID).

Working Demo

2

Prova questa per l'esecuzione della funzione sull'evento click:

function myFun(){ 
    alert(5); 
} 

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

Prova questo:

Ciò funzionerà

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