Come definire più attributi CSS in jQuery?


504

Esiste un modo sintattico in jQuery per definire più attributi CSS senza stringere tutto a destra in questo modo:

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

Se hai, diciamo, 20 di questi, il tuo codice diventerà difficile da leggere, qualche soluzione?

Dall'API jQuery, ad esempio, jQuery comprende e restituisce il valore corretto per entrambi

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

e

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

Si noti che con la notazione DOM, le virgolette attorno ai nomi delle proprietà sono opzionali , ma con la notazione CSS sono richieste a causa del trattino nel nome.

Risposte:


929

Meglio usare solo .addClass()se ne hai 1 o più. Più gestibile e leggibile.

Se hai davvero l'impulso di fare più proprietà CSS, usa quanto segue:

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

NB!
Tutte le proprietà CSS con un trattino devono essere quotate.
Ho inserito le virgolette, quindi nessuno dovrà chiarirlo e il codice sarà funzionale al 100%.


28
Questo in realtà non è corretto - le proprietà hanno bisogno di virgolette attorno a loro e ai valori. Vedi la risposta di Dave Mankoff.
rlb.usa,

16
@ rlb.usa in realtà non è errato, quanto sopra funziona jsfiddle.net/ERkXP . Grazie per il downvote!
redsquare

9
Perché mai proporre e persino discutere per una sintassi non standard! Basta aggiungere uno stile con '-' cioè font-size, e fallisce. Se si tratta di dimostrare limiti, allora sono $('div').css({ width : 300, height: 40 }); validi anche.
Indipendente

26
Se la proprietà CSS ha un trattino (es. Overflow del testo), è necessario inserire virgolette attorno alla proprietà. Questo è ciò di cui stanno parlando rlb.usa e Jonas.
dan

4
@redsquare Ti preghiamo di considerare di aggiungere quanto segue alla tua risposta. Da 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
per farlo funzionare devi cambiare un po 'di sintassi: $ (' # message '). css ({larghezza:' 550px ', altezza:' 300px ',' font-size ':' 8pt '});
Edward Tanguay,

16
grazie a tutti i downvoter drive-by che non hanno mai letto la documentazione jquery? i valori numerici vengono convertiti automaticamente in valori di pixel kthx.
Jimmy,

5
Sì, qual è il problema qui? width: 550è perfettamente valido.
rfunduk,

penso che potresti anche usare fontSizesenza virgolette ... la mia domanda è però ... come si imposta heighte width, diciamo ... al valore STESSO .... sarebbe .css({ { width, height} : 300 })?
Alex Gray,

5
@alexgray non esiste un modo diretto per farlo, ma puoi impostarli ciascuno sulla stessa variabile:var x = 100; $el.css({width: x, height: x});
dave mankoff,

39

Utilizzando un oggetto semplice, è possibile accoppiare stringhe che rappresentano i nomi delle proprietà con i loro valori corrispondenti. Cambiare il colore di sfondo e rendere il testo più audace, ad esempio, sarebbe simile al seguente:

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

In alternativa, puoi utilizzare anche i nomi delle proprietà JavaScript:

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

Ulteriori informazioni sono disponibili nella documentazione di jQuery .


18

per favore prova questo,

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

16

Puoi anche usare attrinsieme a style:

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

10

Concordo con redsquare, tuttavia vale la pena ricordare che se si dispone di una proprietà di due parole come text-alignsi farebbe questo:

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


8

Prova questo

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

7

copione

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

html

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

6

Puoi provare questo

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

1
Questo non è un buon approccio amico. È meglio inviare il tipo utente json
Awais Qarni,

6

Il modo migliore per usare la variabile

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

2

se si desidera modificare più attributi CSS, è necessario utilizzare la struttura degli oggetti come di seguito:

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

ma peggiora quando vogliamo cambiare molto stile , quindi quello che ti consiglio è di aggiungere una classe invece di cambiare CSS usando jQuery e anche l'aggiunta di una classe è più leggibile.

vedi sotto esempio:

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');
});

Un vantaggio di quest'ultimo esempio rispetto a precedente è se si desidera aggiungere alcuni CSS onclickdi qualcosa e si desidera rimuovere quel CSS al secondo clic, quindi in quest'ultimo esempio è possibile utilizzare.toggleClass('custom-class')

dove nell'esempio precedente devi impostare tutti i CSS con valori diversi che hai impostato in precedenza e sarà complicato, quindi usare l'opzione class sarà la soluzione migliore.


0

Puoi usare

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

Il modo migliore è usare $ ('selector'). AddClass ('custom-class') e

.custom-class{
width:16px,
color: green;
margin: 0;
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.