2009-08-23 10 views
0

Je voulais que mon code soit un peu plus propre donc je voulais mettre une très longue fonction dans sa propre méthode.Comment appeler une fonction dans jquery?

En ce moment, j'ai

$('#Id').submit(function() 
{ 
    // lots of code here 
}); 

maintenant je voulais le casser comme

$('#Id').submit(MyFunction); 


     function MyFunction() 
     { 
      // code now here. 
     } 

mais je dois passer quelques parms dans MyFunction. J'ai donc essayé

$('#Id').submit(MyFunction(param1, param2)); 

function MyFunction(param1, param2) 
{ 
    // code now here. 
} 

Mais quand je fais cela, rien ne fonctionne. Firebug me montre une énorme erreur de cul sur F n'étant pas défini ou quelque chose. Donc, je ne suis pas sûr de ce que je dois faire pour que ça marche.

Répondre

3

Il vous suffit d'écrire:

$('#Id').submit(function() 
{ 
    MyFunction(param1, param2); 
}); 
+0

Merci qui semble avoir fait le tour. Une raison pour laquelle vous ne pouvez pas le passer tout de suite? – chobo2

+0

Eh bien, ce que vous faites là est de mettre en place une fonction anonyme. Je pense que vous pouvez le passer immédiatement (comme votre deuxième exemple le fait), mais quand vous avez besoin de plus de params (du contexte de l'écriture de ce code, pas de l'appel de la méthode) alors vous devez les passer comme ça (parce que vous n'êtes pas en charge de l'appel .submit, qui vous appelle réellement.) –

+1

@ chobo2: Parce qu'il n'y a pas de magie Si vous écrivez 'foo.submit (MyFunction (un, deux))' alors vous appelez * 'MyFunction' juste là et là, et (en supposant que ça ne plante pas en premier lieu) essayant de passer sa valeur de retour à' submit'. – hobbs

2

Vous pouvez essayer

$('#Id').submit(function() { MyFunction(param1, param2); }); 

La raison pour laquelle votre code ne fonctionne pas est que vous étiez appelantMyFunction(param1, param2) et passer le résultat à le Jquery submit - et ce n'est pas ce que vous vouliez.

0

Vous ne pouvez pas passer le paramètre directement, mais vous pouvez faire quelque chose comme ceci:

$("#Id").submit(function(){ 
    MyFunction(param1,param2); 
}); 
Questions connexes