2012-06-08 13 views
6

Ich habe den folgenden Code.Unterschied zwischen `.click (handler())` und `.click (handler)`

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

Wenn ich diesen Code ausführen, dann wird alert(5) kommt, wenn die Seite geladen wird. Wenn ich schreibe

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

dann erscheint die Warnung nur, wenn wir auf die Schaltfläche klicken. Warum verhält es sich so?

+0

https: //developer.mozilla .org/de/JavaScript/Guide/Funktionen können hilfreich sein, um Funktionen besser zu verstehen. –

Antwort

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

Dies erfordert myFun() und versucht zu installieren, was es als Event-Handler zurückkehrt. Da es nichts zurückgibt, sind Sie tatsächlich Triggerung der Klick auf #myID.

+1

@Lanzz .. wenn Sie meine ganze Frage sehen, habe ich auch Funktion wie Sie erwähnt. Aber was ist der Unterschied? Angenommen, ich möchte irgendwelche Argumente weitergeben und dann wie? – Searcher

+1

'$ (" # myID "). Click (function() {myFun (einige Argumente)});' – lanzz

+1

Wenn Sie die Funktion übergeben() bedeutet dies, dass Sie diese Methode aufrufen möchten, wenn Sie es nicht tun wird nur aufgerufen, wenn das Click-Ereignis ausgelöst wird. – mprabhat

3

Lesen Sie dieses .click() - Binden Sie einen Ereignishandler an das JavaScript-Ereignis click, oder lösen Sie dieses Ereignis auf einem Element mit JavaScript aus.

Sie müssen nur $("#myID").click(myFun); statt $("#myID").click(myFun()); zu schreiben, weil, wenn Sie myFun() in Ihrem Code schreiben die Funktion sofort aufgerufen wird (und nicht, wenn ein Klick-Ereignis ausgelöst wird auf #myID).

Working Demo

2

diese versuchen, die Funktion auf dem Click-Ereignis für die Ausführung:

function myFun(){ 
    alert(5); 
} 

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

Versuchen Sie folgendes:

Diese Arbeit wird

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