2010-07-20 105 views
2

愚蠢的問題,我認爲,但有使用方式的「如果」語句作爲可重複使用的功能jQuery的「可重複使用的」功能

success: function(msg){ 
    if(msg=='o'){ 
     $j('#ok').show(); 
     $j(button).show(); 
     $j('#chk').hide(); 
     } 
    else{ 
     $j('#ok').hide(); 
     $j('#chk').show(); 
     $j(button).hide(); 
     } 

    } 

我有很多的時候,我想打電話給它,我寧可有一個「更小」的重量。

回答

1

這種技術採用「封閉」,以產生一個函數,以提供作爲成功方法:

function doStuffGenerator(button){ 
    return function(msg){ 
    if(msg=='o'){ 
     $j('#ok').show(); 
     $j(button).show(); 
     $j('#chk').hide(); 
    } 
    else{ 
     $j('#ok').hide(); 
     $j('#chk').show(); 
     $j(button).hide(); 
    } 
    }; 
} 

... 
jQuery.ajax({ 
    ... 
    success: doStuffGenerator(button) 
    ... 
}); 
1
success: function(msg){ 
    doStuff(msg); 

    } 

function doStuff() 
{ 
    if(msg=='o'){ 
     $j('#ok').show(); 
     $j(button).show(); 
     $j('#chk').hide(); 
    } 
    else{ 
     $j('#ok').hide(); 
     $j('#chk').show(); 
     $j(button).hide(); 
    } 
} 
+1

或者直接使用doStuff獲得成功的值。 – Shog9 2010-07-20 15:06:41

+0

@Shog9好點。 – skyfoot 2010-07-20 15:18:09

1

當然。根本不傻。

success: function(msg){ 
    checkMsg(msg); 
} 

... 

function checkMsg(msg) { 
    if(msg=='o'){ 
     $j('#ok').show(); 
     $j(button).show(); 
     $j('#chk').hide(); 
    } else { 
     $j('#ok').hide(); 
     $j('#chk').show(); 
     $j(button).hide(); 
    } 
} 

我假定button是已在success:回調的範圍之外創建的變量。

+1

正如@Shog9在評論中指出的那樣,如果'success:'回調函數不需要做其他任何事情,那麼你可以直接使用函數引用作爲值。 '成功:checkMsg' – user113716 2010-07-20 15:20:03

0

另一種方式來寫在jQuery函數是這樣的:

var myFxn = function(param){ 
    // do function stuff here 
} 

var myOtherFxn = function(param){ 
    // do function stuff here 
} 

所以在代碼:

if(msg=='o'){ 
    myFxn(); 
} else { 
    myOtherFxn(); 
}