2010-07-20 104 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(); 
}