Wie definiere ich mehrere CSS-Attribute in jQuery?


504

Gibt es in jQuery eine syntaktische Möglichkeit, mehrere CSS-Attribute zu definieren, ohne alles wie folgt nach rechts auszurichten:

$("#message").css("width", "550px").css("height", "300px").css("font-size", "8pt");

Wenn Sie beispielsweise 20 davon haben, wird Ihr Code schwer zu lesen sein. Gibt es Lösungen?

In der jQuery-API beispielsweise versteht jQuery den korrekten Wert für beide und gibt ihn zurück

.css({ "background-color": "#ffe", "border-left": "5px solid #ccc" }) 

und

.css({backgroundColor: "#ffe", borderLeft: "5px solid #ccc" }).

Beachten Sie, dass bei der DOM-Notation Anführungszeichen um die Eigenschaftsnamen optional sind, bei der CSS-Notation jedoch aufgrund des Bindestrichs im Namen erforderlich sind .

Antworten:


928

Besser nur verwenden, .addClass()auch wenn Sie 1 oder mehr haben. Wartbarer und lesbarer.

Wenn Sie wirklich den Drang haben, mehrere CSS-Eigenschaften auszuführen, verwenden Sie Folgendes:

.css({
   'font-size' : '10px',
   'width' : '30px',
   'height' : '10px'
});

NB!
Alle CSS-Eigenschaften mit einem Bindestrich müssen in Anführungszeichen gesetzt werden.
Ich habe die Anführungszeichen so platziert, dass niemand dies klären muss, und der Code ist zu 100% funktionsfähig.


28
Dies ist tatsächlich falsch - die Eigenschaften benötigen Anführungszeichen sowie die Werte. Siehe Dave Mankoffs Antwort.
rlb.usa

16
@ rlb.usa eigentlich ist es nicht falsch, das obige funktioniert jsfiddle.net/ERkXP . Danke für die Ablehnung!
Redsquare

9
Warum um alles in der Welt eine solche nicht standardmäßige Syntax vorschlagen und sogar dafür argumentieren? Fügen Sie einfach einen Stil mit '-' hinzu font-size, und es schlägt fehl. Wenn es darum geht, Grenzen zu beweisen, dann sind sie auch $('div').css({ width : 300, height: 40 }); gültig.
Unabhängiger

26
Wenn die CSS-Eigenschaft ein Bindestrichzeichen (dh einen Textüberlauf) hat, müssen Sie die Eigenschaft in Anführungszeichen setzen. Darüber reden rlb.usa und Jonas, denke ich.
Dan

4
@redsquare Bitte fügen Sie Ihrer Antwort Folgendes hinzu. Von jQuery API :For example, jQuery understands and returns the correct value for both .css({ "background-color": "#ffe", "border-left": "5px solid #ccc" }) and .css({backgroundColor: "#ffe", borderLeft: "5px solid #ccc" }). Notice that with the DOM notation, quotation marks around the property names are optional, but with CSS notation they're required due to the hyphen in the name.
Zanetu


68
$('#message').css({ width: 550, height: 300, 'font-size': '8pt' });

3
Damit dies funktioniert, müssen Sie die Syntax ändern: $ ('# message'). css ({width: '550px', height: '300px', 'font-size': '8pt'});
Edward Tanguay

16
ähm, danke an alle Drive-by-Downvoter, die nie die jquery-Dokumentation gelesen haben? numerische Werte werden automatisch in Pixelwerte kthx umgewandelt.
Jimmy

5
Ja, was ist das Problem hier? width: 550ist vollkommen gültig.
Rfunduk

Ich denke, Sie könnten auch fontSizeohne Anführungszeichen verwenden ... meine Frage ist jedoch ... wie setzen Sie heightund width, sagen wir ... auf den gleichen Wert ... wäre es .css({ { width, height} : 300 })?
Alex Gray

5
@alexgray gibt es keine direkte Möglichkeit, dies zu tun, aber Sie können sie jeweils auf die gleiche Variable setzen:var x = 100; $el.css({width: x, height: x});
Dave Mankoff

39

Mithilfe eines einfachen Objekts können Sie Zeichenfolgen, die Eigenschaftsnamen darstellen, mit den entsprechenden Werten koppeln. Das Ändern der Hintergrundfarbe und das Mutieren von Text würde beispielsweise folgendermaßen aussehen:

$("#message").css({
    "background-color": "#0F0", 
    "font-weight"     : "bolder"
});

Alternativ können Sie auch die JavaScript-Eigenschaftsnamen verwenden:

$("#message").css({
    backgroundColor: "rgb(128, 115, 94)",
    fontWeight     : "700"
});

Weitere Informationen finden Sie in der Dokumentation von jQuery .


18

Bitte versuchen Sie dies,

$(document).ready(function(){
    $('#message').css({"color":"red","font-family":"verdana"});
})

16

Sie können auch attrzusammen mit verwenden style:

$('#message').attr("style", "width:550; height:300; font-size:8px" );

10

Stimmen Sie mit redsquare überein, es ist jedoch erwähnenswert, dass Sie Folgendes text-aligntun würden , wenn Sie eine Zwei-Wörter-Eigenschaft wie diese haben:

$("#message").css({ width: '30px', height: '10px', 'text-align': 'center'});


8

Versuche dies

$(element).css({
    "propertyName1":"propertyValue1",
    "propertyName2":"propertyValue2"
})

7

Skript

 $(IDname).css({
    "background":"#000",
    "color":"#000"
})

Html

<div id="hello"></div>

6

Sie können dies versuchen

$("p:first").css("background-color", "#B2E0FF").css("border", "3px solid red");

1
Dies ist kein guter Ansatz, Alter. Es ist besser, Benutzer json Typ zu senden
Awais Qarni

6

Beste Möglichkeit, Variablen zu verwenden

var style1 = {
   'font-size' : '10px',
   'width' : '30px',
   'height' : '10px'
};
$("#message").css(style1);

2

Wenn Sie mehrere CSS-Attribute ändern möchten, müssen Sie die Objektstruktur wie folgt verwenden:

$(document).ready(function(){
   $('#message').css({
                   "background-color": "#0F0",
                   "color":"red",
                   "font-family":"verdana"
                });
});

Aber es wird schlimmer, wenn wir viel Stil ändern wollen. Ich schlage Ihnen daher vor, eine Klasse hinzuzufügen, anstatt CSS mit jQuery zu ändern, und das Hinzufügen einer Klasse ist auch besser lesbar.

siehe Beispiel unten:

CSS

<style>
    .custom-class{
       font-weight: bold;
       background: #f5f5f5;
       text-align: center;
       font-size: 18px;
       color:red;
    }
</style>

jQuery

$(document).ready(function(){
   $('#message').addclass('custom-class');
});

Ein Vorteil des letzteren Beispiels gegenüber dem ersteren besteht darin, dass Sie das CSS verwenden können, wenn Sie etwas CSS onclickvon etwas hinzufügen und dieses CSS beim zweiten Klick entfernen möchten.toggleClass('custom-class')

Wenn Sie im vorherigen Beispiel alle CSS mit unterschiedlichen Werten festlegen müssen, die Sie zuvor festgelegt haben, ist dies kompliziert. Daher ist die Verwendung der Klassenoption eine bessere Lösung.


0

Sie können verwenden

$('selector').css({'width:'16px', 'color': 'green', 'margin': '0'});

Am besten verwenden Sie $ ('selector'). AddClass ('custom-class') und

.custom-class{
width:16px,
color: green;
margin: 0;
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.