2010-07-20 4 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

+0

@ Shog9 좋은 지적. – skyfoot

1

확실히. 바보가 아니야. 제가

button 가정
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(); 
    } 
} 

success: 콜백 다루지 만든 변수이다.

+1

@ Shog9가 주석에서 언급했듯이,'success :'콜백이 다른 일을 할 필요가 없다면, 단순히 함수 참조를 직접 값으로 사용할 수 있습니다. '성공 : checkMsg' – user113716

0

jQuery를 함수를 작성하는 또 다른 방법은 이것이다 :

코드에서 너무
var myFxn = function(param){ 
    // do function stuff here 
} 

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

:

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