2010-07-20 3 views
2

Question idiote je pense, mais est-il un moyen d'utiliser le « si » en fonction réutilisableJquery « réutilisable » fonction

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

    } 

J'ai plusieurs fois quand je veux l'appeler et je aurait plutôt un poids "plus petit".

Répondre

1

Cette technique utilise « fermetures » pour générer une fonction pour fournir une méthode de réussite:

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

Ou utilisez simplement doStuff pour la valeur du succès directement. – Shog9

+0

@ Shog9 bon point. – skyfoot

1

Bien sûr. Pas bête du tout.

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

Je suppose button est une variable qui a été créée en dehors du champ d'application de la fonction de rappel success:.

+1

Comme @ Shog9 l'a noté dans un commentaire, si le rappel 'success:' n'a pas besoin de faire autre chose, vous pouvez simplement utiliser la référence de la fonction comme valeur directement. 'succès: checkMsg' – user113716

0

Une autre façon d'écrire des fonctions dans jQuery est la suivante:

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

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

donc dans votre code:

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