2009-01-15 6 views
45

Dans le code ci-dessous, pourquoi le travail de la fonction ouverte mais la fonction près ne fonctionne pas?Appel d'une fonction jQuery avec clic()

$("#closeLink").click("closeIt"); 

Comment vous venez appel une fonction click() au lieu de définir dans la méthode click()?

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#openLink").click(function() { 
      $("#message").slideDown("fast"); 
     }); 
     $("#closeLink").click("closeIt"); 
    }); 

    function closeIt() { 
     $("#message").slideUp("slow"); 
    } 
</script> 

Mon HTML:

Click these links to <span id="openLink">open</span> 
and <span id="closeLink">close</span> this message.</div> 

<div id="message" style="display: none">This is a test message.</div> 

Répondre

115
$("#closeLink").click(closeIt); 

Disons que vous voulez appeler votre fonction passer quelques args à lui dire, closeIt(1, false). Ensuite, vous devez créer une fonction anonyme et appeler le closeIt.

$("#closeLink").click(function() { 
    closeIt(1, false); 
}); 
+9

Les guillemets sont supprimés de la fonction closeIt (il m'a fallu trop de temps pour en faire l'objet, donc ajouter un commentaire pour aider quelqu'un d'autre). – NatGordon

+1

@Tiago pourquoi pas()? Et si vous voulez passer des arguments? – Damon

+15

@Damon: parce que de cette façon la fonction sera appelée et le retour de celle-ci sera passé à la fonction click. Si vous voulez passer des arguments, vous devez faire quelque chose comme ceci: $ ("# closeLink"). Click (function() {closeIt (some, args, you, 'want');}); – Tiago

Questions connexes