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 .

Edward Tanguay
quelle

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.

rotes Quadrat
quelle
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
165

Übergeben Sie es als Objekt:

$(....).css({
    'property': 'value', 
    'property': 'value'
});

http://docs.jquery.com/CSS/css#properties

Dave Mankoff
quelle
9
Javascript-Objekt, nicht JSON.
Chris
68
$('#message').css({ width: 550, height: 300, 'font-size': '8pt' });
Jimmy
quelle
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 .

Sampson
quelle
18

Bitte versuchen Sie dies,

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

Sie können auch attrzusammen mit verwenden style:

$('#message').attr("style", "width:550; height:300; font-size:8px" );
Somnath Kharat
quelle
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'});
Darko Z.
quelle
10
$("#message").css({"width" : "550px", "height" : "300px", "font-size" : "8pt"});

Es ist möglicherweise auch besser, jQuery's addClasszu verwenden, um Ihr Projekt skalierbarer zu machen.

Quelle: Gewusst wie: jQuery CSS hinzufügen und CSS entfernen

Studio3
quelle
8

Versuche dies

$(element).css({
    "propertyName1":"propertyValue1",
    "propertyName2":"propertyValue2"
})
Janak Prajapati
quelle
7

Skript

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

Html

<div id="hello"></div>
Rizo
quelle
6

Sie können dies versuchen

$("p:first").css("background-color", "#B2E0FF").css("border", "3px solid red");
Sumith Harshan
quelle
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);
Justin
quelle
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.

Haritsinh Gohil
quelle
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;
}
Akshay Rathnavas
quelle