2010-07-20 2 views
-2

Bonjour à tous. J'ai un petit problème.. La fonction .click dans jquery doit toujours avoir une fonction sans nom?

J'ai une fonction. Appelons-le:

function rowClick() 
{ 

} 

Quoi qu'il en soit, la question est:

Comment puis-je lier cette fonction à un événement de clic sans être appelé?

Ce que je veux dire est, si je fais ceci:

$("#holder").click (function(){ rowClick(); }); 

la fonction rowClick est appelée lors de l'enregistrement à l'événement click.

Quoi qu'il en soit, je comprends pourquoi cela arrive. Je ne comprends tout simplement pas comment je peux lier la fonction à l'événement d'une manière telle qu'elle ne sera pas appelée.

Merci.

+1

il est appelé parce que vous mettez '()' après, ce qui signifie "appeler la fonction sur la gauche." –

+1

Mais cela ne devrait se produire que lorsque la fonction anonyme est invoquée et que, à son tour, cela ne devrait se produire que lorsque l'événement click se déclenche. Je soupçonne que le PO a assaini le code dans son poste, masquant ainsi le vrai problème. – belugabob

+0

dans le code que vous avez publié, rowClick n'est pas appelé lors de l'enregistrement de l'événement click - il n'est appelé que lorsque le clic se produit réellement. La question contenait-elle à l'origine ce code: '$ (" # holder "). Click (rowClick());' ?? – Kip

Répondre

3

Retirez la fonction() et entre parenthèses du nom de la fonction, ex:

$("#holder").click(rowClick); 
+0

oublié de mentionner que j'ai des paramètres que je dois passer à cette fonction .. comment puis-je faire cela sans les parenthèses ? –

+0

Créez une deuxième fonction sans paramètre qui appelle l'autre fonction avec les paramètres corrects. –

+0

Ensuite, vous devriez revenir à la technique de la fonction anonyme - ce qui devrait fonctionner. Pouvez-vous poster un peu plus du code environnant? – belugabob

0

Que diriez-vous ...

$("#holder").click (rowClick); 

... bien que la fonction anonyme ne doit pas être invoquée (et, par conséquent, ne devrait rowClick) jusqu'à ce que l'événement click se produit.

+0

lol c'est ce que je pensais mais maintenant quand vous l'avez dit j'ai découvert que j'ai un bug. pour une raison quelconque, lorsque je clique sur une ligne, il est déclenché plusieurs fois pas une fois ... –

0

Il vous suffit de passer un paramètre comme référence de fonction . Cela ne veut pas nécessairement dire .

L'appel

$("#holder").click (rowClick); 

fonctionnera très bien. Ne pas oublier de remodeler votre fonction rowClick avec un event parameter:

function rowClick (event) { 
    alert(event.target.id); 
} 

Ce paramètre est passé automatiquement et est accessible au sein de votre fonction de rappel.

Questions connexes