jQuery Plugin Namensraumfunktionen

8

Ich erstelle ein jQuery-Plugin, das ziemlich umfangreich ist. Tatsächlich besteht das Plugin technisch aus ein paar Plugins, die alle zusammen funktionieren.

%Vor%

Ist es möglich, jQuery-Plugins mit Namespaces zu versehen, so dass die kleineren Plugins Funktionen des größeren Plugins sein könnten

%Vor%

Dies würde den jQuery-Funktionsnamensraum nicht belasten. Sie könnten dann die Plugins wie

aufrufen %Vor%

Das Problem, auf das ich beim Ausprobieren gestoßen bin, ist, dass die Funktionen, die als Eigenschaften der foo () - Plug-in-Funktion deklariert sind, nicht korrekt auf "this" gesetzt sind. 'this' verweist auf das übergeordnete Objekt und nicht auf das jQuery-Objekt.

Irgendwelche Ideen oder Meinungen würden geschätzt werden.

-Matt

    
mazniak 02.08.2009, 19:35
quelle

4 Antworten

11

Sobald Sie $.fn.foo.bar() - this auf $.fn.foo setzen, was Sie in JavaScript erwarten würden ( this ist das Objekt, an dem die Funktion aufgerufen wird.)

Ich habe in Plugins von jQuery UI (wie sortierbar) bemerkt, wo Sie Funktionen aufrufen wie:

%Vor%

Wenn Sie so etwas tun - können Sie jQuery selbst erweitern:

%Vor%     
gnarf 02.08.2009, 19:44
quelle
2

Ich weiß, dass dies bereits beantwortet wurde, aber ich habe ein Plugin erstellt, das genau das tut, was Sie wollen:

Ссылка

Ich habe unten ein kleines Beispiel eingefügt, aber werfen Sie einen Blick auf diesen Beitrag der jQuery-Entwicklergruppe für ein ausführlicheres Beispiel: Ссылка

Es ermöglicht Ihnen, ein Objekt mit beliebig vielen Methoden zu erstellen:

%Vor%

Jetzt können Sie gehen:

%Vor%

Es gibt natürlich viele, viele andere Möglichkeiten, wie in der Dev-Gruppe Post erklärt.

    
Tres 03.08.2009 00:08
quelle
1

Nun, ich bin mir sicher, dass es viele Möglichkeiten gibt, diese Katze zu häuten. Die jQuery UI-Bibliothek verwendet ein Muster wie dieses:

%Vor%     
Ken Browning 02.08.2009 19:41
quelle
0

Ich bin ein Fan des Musters, das ich auf Eric Martins gesehen habe. Dies funktioniert gut, wenn ich NICHT auf DOM-Elemente - in diesem Fall einen Wrapper zur Verwendung von localStorage - reagiere.

Auf diese Weise kann ich leicht auf den Konstruktor verweisen:

%Vor%

... oder eine öffentliche Methode:

%Vor%

Hier sind die Interna:

%Vor%     
Jared 01.09.2011 16:38
quelle