2009-07-30 8 views
3

Je suis en train de réaliser quelque chose comme ce qui suit, mais ne savent pas ce qui est erroné:plugin jQuery méthode publique/fonction

$.a = function() { 

// some logic here 

function abc(id) { 
    alert('test'+id); 
} 


} 

$.a.abc('1'); 

J'ai essayé d'utiliser la fonction de retour, mais cela ne semble pas fonctionner non plus. Puis-je avoir une aide s'il vous plait.

Nous vous remercions de votre temps.

Répondre

9

Depuis $.a doit être une fonction en elle-même, vous devrez ajouter la fonction abc comme une propriété à la fonction $.a:

$.a = function() { 
    // some logic here... 
}; 

$.a.abc = function (id) { 
    alert('test' + id); 
}; 

Si abc doit être défini à partir de la fonction $.a, vous pouvez fais ce qui suit. Notez que $.a.abc ne sera pas disponible tant que $.a n'a pas été appelée lors de l'utilisation de cette méthode! Rien dans une fonction n'est évalué jusqu'à ce qu'une fonction soit appelée.

$.a = function() { 

    // Do some logic here... 

    // Add abc as a property to the currently calling function ($.a) 
    arguments.callee.abc = function (id) { 
     alert('test' + id); 
    }; 
}; 

$.a(); 
$.a.abc('1'); 
+0

mais je veux que ce soit une fonction au sein d'une fonction. Je ne peux pas changer la structure de $ .a. –

+0

Ah, je vois. Je vais mettre à jour mon exemple. – Blixt

+1

Cool, bonne réponse! Je vous remercie. –

1
$.a = (function(){ 
    var a = function() { 
     //... 
    }; 
    a.abc = function() { 
     //... 
    } 
    return a; 
})();