2009-08-23 53 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); 
});