2009-08-23 64 views
0

我想让我的代码更清洁一些,所以我想在它自己的方法中使用很长的函数。如何在jQuery中调用函数?

现在我有

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

现在我想打破它像

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


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

,但我需要一些PARMS通入MyFunction的。所以我试了

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

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

但是当我这样做的时候什么都行不通。 Firebug向我展示了一些关于F没有被定义或者某些东西的巨大屁股错误。所以我不确定我需要做些什么才能使它工作。

回答

3

你只需要编写:

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

感谢,似乎已经完成了帽子戏法。任何你不能马上传递的理由? – chobo2 2009-08-23 06:39:07

+0

那么,你在做什么是建立一个匿名函数。我认为你可以马上传递它(就像你的第二个例子那样),但是当你需要更多的参数时(从编写代码的上下文中,而不是方法的调用),那么你需要像这样传递它们(因为你不负责.submit调用,实际上是你的调用) – 2009-08-23 06:42:19

+1

@ chobo2:因为没有魔法,如果你写'foo.submit(MyFunction(one,two))',那么你就*调用* 'MyFunction'就在那里,并且(假设它不首先崩溃)尝试将它的返回值传递给'submit'。 – hobbs 2009-08-23 09:08:14

2

你可以尝试

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

你的代码没有工作的原因是,你是调用MyFunction(param1, param2)结果传递给Jquery submit - 这不是你想要的。

0

你不能直接传递参数,但你可以做这样的事情:

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