Wie kann CSS-String mithilfe von Javascript / jQuery ohne Parsen / Tokenizing zum Abrufen von Eigenschaftswertpaaren angewendet werden?

8

Ich habe einige CSS in Stringform, z.B.

%Vor%

und ich möchte dieses CSS auf ein <div> anwenden. Aber alle Beispiele für die Verwendung von jQuery zum Anwenden von CSS verwenden die css -Methode, und um diese Route zu gehen, müsste ich die CSS-Zeichenkette durch Semikolons ( ; ) teilen, um Eigenschaften-Wert-Paare zu erhalten ( : ), um die Eigenschaft und den Wert abzurufen, und tun Sie

%Vor%

Gibt es eine Möglichkeit, das CSS direkt aus seiner Zeichenfolgenform anzuwenden?

Ich befürchte, dass ein so naives Parsen des CSS (Semikolons und Doppelpunkte) fehlschlägt, wenn CSS-Werte diese Zeichen enthalten können, z. B. in url Unterwerten.

    
Andrew Cheong 12.02.2013, 10:07
quelle

8 Antworten

12

Sie können das vorhandene style -Attribut abrufen und dann ein neues setzen:

%Vor%

Live-Beispiel | Quelle

    
T.J. Crowder 12.02.2013, 10:11
quelle
4

Vorausgesetzt, dass für das Element keine Inline-Stile mit dem Attribut style definiert sind, funktioniert Folgendes:

%Vor%

Beispielgeige

Beachten Sie, dass dies jedoch keine ideale Lösung ist. Eine viel bessere Methode wäre, die benötigten Styles in eine Klasse zu stellen und stattdessen addClass() zu verwenden.

    
Rory McCrossan 12.02.2013 10:11
quelle
3

Erhalte zuerst dein div-Element mit einem Selektor:

%Vor%

Dann holen Sie sich die aktuelle CSS:

%Vor%

Wenn es null ist, dann setze es auf den neuen Stil. Ansonsten füge den neuen Stil hinzu:

%Vor%

Aktualisieren Sie abschließend den Stil des div:

%Vor%

Das ist es. Sehen Sie sich die Demo an: Ссылка

    
Aadit M Shah 12.02.2013 10:13
quelle
2

Es gibt eine andere Möglichkeit, stringbasierte Stile hinzuzufügen. Wenn unten ist die Stilzeichenfolge -

%Vor%

Dann

%Vor%

Geige: Ссылка

    
vagdwd 27.03.2015 04:32
quelle
1

Sie können die CSS-Zeichenfolge direkt zum div in das style-Attribut mit der Funktion jQuery .attr () hinzufügen, aber ein besserer Weg wäre, eine Klasse Ihrem div mit der Funktion jQuery .addClass () zuzuordnen und die CSS hinzuzufügen Eigenschaften für die Klasse.

    
arnaud 12.02.2013 10:11
quelle
0

Warum erstellen Sie keine CSS-Klasse und verwenden nur die Methode addClass removeClass aus jQuery

%Vor%

dann

%Vor%     
robinef 12.02.2013 10:10
quelle
0

Verwenden Sie einfach die jQuery-Funktion .attr('style', 'somthing...') . Sie ist sehr einfach zu verwenden und Sie müssen nicht über Fehlertoleranz nachdenken.

    
Vanilla 19.03.2015 02:32
quelle
0

Sie können es als ein Objekt abrufen

%Vor%     
4EACH 27.03.2015 04:44
quelle

Tags und Links