2009-07-30 11 views
3

Ich versuche, so etwas wie die folgenden zu erreichen, aber weiß nicht, was falsch ist:jQuery-Plugin öffentliche Methode/Funktion

$.a = function() { 

// some logic here 

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


} 

$.a.abc('1'); 

Ich habe versucht, die Rückkehr-Funktion, aber das scheint nicht zu funktionieren. Kann mir bitte jemand helfen.

Vielen Dank für Ihre Zeit.

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

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

Wenn abc muss innerhalb der $.a Funktion definiert werden, können Sie:

Antwort

9

Da $.a eine Funktion in sich selbst sein müssen, werden Sie die abc Funktion als Eigenschaft zum $.a Funktion hinzufügen müssen Mach Folgendes. Beachten Sie, dass $.a.abc nicht verfügbar ist, bis $.a aufgerufen wurde, wenn Sie diese Methode verwenden! Nichts in einer Funktion wird ausgewertet, bis eine Funktion aufgerufen wird.

$.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

, aber ich will es eine Funktion innerhalb einer Funktion sein. Ich kann die Struktur von $ .a nicht ändern. –

+0

Ah, ich verstehe. Ich werde mein Beispiel aktualisieren. – Blixt

+1

Cool, nette Antwort! Vielen Dank. –

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