jQuery Plugin extend options for multiple CSS

messmar

Erfahrenes Mitglied
Hallo zusammen,

ich habe nen Plugin geschrieben, wo ich die userOptions über
HTML:
$.extend
Methode erweitere.

Code:
HTML:
     (function($) {
       ;$.fn.getFormData = function(userOptions) {

        var defaults = {
            property1: "border",
            value1: "3px solid green",
            property2: "color",
            value2: "#ff0000",
            property3: "font-weight",
            value3: "bold"
        };

        var options = $.extend(defaults, userOptions);
        .....
        .....
     })(jQuery);

Ich verwende im weiteren Code folgendes z.B.

HTML:
       $('.xxxxx').css(options.property2, options.value2).css(options.property3, options.value3);

was auch ohne Probleme funktinoiert.

Aber wenn ich es ohne chaning verwenden möchte z.B.

HTML:
      $('.Pin_Txt').css({
              options:property2, options:value2, 
              options:property3, options:value3
     });

dann geht's leider nicht, was eigentlich mehr Sinn macht statt den chaning über zwei Mal die css(); Methode.

Warnung über NetBeans-Debugger:
The global variable "value3" is not declared.
The global variable "value2" is not declared.
The global variable "property3" is not declared.
Duplicate name of property "options".
Duplicate name of property "options".
Duplicate name of property "options".

Fehler von FireFox FireBug:
Fehler: ReferenceError: property2 is not defined
Quelldatei: http://localhost:8084/jQeuryPlugins/js/getFormData.js

Hat bitte Jemand evtl. eine Idee, wie ich es umgehen könnte? ich würde es gerne ohne chaning umsetzen.

Vielen Dank im Voraus
Messmar
 
Mh, du kannst definitiv keine Variablen als Keys in einem Objekt nutzen, aber du kannst folgendes probieren:
Javascript:
var tmp = {};
tmp[options.property2] = options.value2;
tmp[options.property3] = options.value3;

.css(tmp).
 
Danke! es funktioniert.

Nur ich bin kein copy/paster und möchte gerne (sicher gehen) verstehen, was da erstellt wurde.

Frage:
Das ist dann ein Object (tmp{}) Array?

Gruß
Messmar
 
Also nein: es gibt in JavaScript nur numerische Arrays und Objekte, welche aber auch als "assoziative Arrays" verwendet werden. Da man außerdem in JavaScript keine Variablennamen innerhalb einer Objektdefinition verwenden kann, erstelle ich erst ein Objekt und weise ihm dann, wie bei einem Array, Werte zu – und eben die entsprechenden Schlüssel.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück