jQuery Plugin Authoring - Legen Sie verschiedene Optionen für verschiedene Elemente fest

8

Ich habe ein jQuery-Plugin erstellt, das sehr gut funktioniert, mit der Ausnahme, dass ich das Plugin für verschiedene Objekte aufrufen kann und jedes Objekt die angegebenen Optionen behält. Das Problem ist, dass wenn ich das Plugin auf ein Objekt anrufe, sagen:

%Vor%

Rufen Sie das Plugin dann erneut auf einem anderen Objekt auf, sagen Sie:

%Vor%

Wenn ich dann zurückgehe und versuche, etwas mit # myDiv1 zu machen, das seine ursprünglichen Optionen benötigt, um noch intakt zu sein, zB:

%Vor%

es wird nicht seine ursprünglichen Optionen haben, aber sie werden durch die Optionen für # myDiv2 außer Kraft gesetzt. Was ist der richtige Weg, dies zu tun, damit jedes Objekt die ursprünglichen Optionen behält? (Und hier ist ein Beispiel Code, was ich in dem Plugin mache)

%Vor%

Ich erkenne, dass das eine Art von Spielraum ist oder etwas. Also, wie bekomme ich meine Optionen, um verbunden zu bleiben und im Bereich des ursprünglichen Objekts zu bleiben (zB # myDiv1), dem sie gegeben wurden.

BEARBEITEN: Bei einigen Nachforschungen sehe ich, dass Sie Daten mit jQuerys .data-Funktion in einem Objekt speichern können, und die Dokumentation besagt, dass die jQuery UI diese ausführlich verwendet. Wäre das Richtige hier zu tun, die Optionen auf dem Objekt mit .data zu speichern, dann, wenn später verwiesen wird, benutzen Sie die Optionen, die in .data ???

gespeichert sind     
Ryan 29.01.2010, 15:37
quelle

3 Antworten

16

Zunächst möchten Sie im Allgemeinen den Befehl innerhalb Ihrer Erweiterungsmethode behandeln. Zweitens sollten Sie jedem Objekt Konfigurationen hinzufügen ...

%Vor%

Im obigen Beispiel haben Sie eine generische Vorlage für eine jQuery-Erweiterung. Es ist normalerweise eine gute Form, die folgende Konvention zur Verwendung zu haben.

%Vor%

Aktualisiert, um .data von jedem einzelnen Objekt zu verwenden.

    
Tracker1 01.02.2010, 22:09
quelle
0

Ich hatte das gleiche Problem, aber nur die übergebenen Funktionen wurden überschrieben. Geradeaus Eigenschaften bestanden fort.

Wie auch immer, um zu erklären, was ~ reinreinpost bedeutete, sollte es funktionieren, wenn Sie Ihren Code ändern. Sie müssen "opts" überall hinüberreichen, aber ich denke, dass es notwendig ist, die Optionen aus dem pluginweiten Namespace herauszunehmen.

%Vor%

Bearbeiten: Hier ist Code von meinem Plugin

%Vor%

Ich habe also keine Plugin-weite "Config" - nur innerhalb jeder Funktion.

    
Pickle 29.01.2010 17:53
quelle
-1

Ihre Optionen sind pluginweit. Verschiebe sie in die einzelnen (). (Warum stellen Sie diese Frage? Sie schreiben die Lösung selbst ziemlich genau.)

    
reinierpost 29.01.2010 15:49
quelle