Как определить несколько атрибутов CSS в jQuery?

504

Есть ли в jQuery какой-либо синтаксический способ определить несколько атрибутов CSS, не вычеркивая все вправо следующим образом:

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

Если у вас есть, скажем, 20 из них, ваш код станет трудным для чтения, какие-нибудь решения?

Например, из jQuery API jQuery понимает и возвращает правильное значение для обоих

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

а также

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

Обратите внимание, что в нотации DOM кавычки вокруг имен свойств являются необязательными , но в нотации CSS они обязательны из-за дефиса в имени.

Эдвард Тангей
источник

Ответы:

929

Лучше просто использовать, .addClass()даже если у вас есть 1 или более. Более понятный и читаемый.

Если у вас действительно есть желание сделать несколько свойств CSS, используйте следующее:

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

NB!
Любые свойства CSS с дефисом должны быть заключены в кавычки.
Я поместил кавычки, поэтому никому не нужно будет это разъяснять, и код будет на 100% функциональным.

Красная площадь
источник
28
Это на самом деле неверно - свойствам нужны кавычки вокруг них, а также значения. Смотрите ответ Дэйва Манкоффа.
rlb.usa
16
@ rlb.usa на самом деле это не так, выше работает jsfiddle.net/ERkXP . Спасибо за отрицание!
красный квадрат
9
Зачем вообще предлагать и даже спорить о таком нестандартном синтаксисе! Просто добавьте стиль с помощью «-», то есть font-size, и он потерпит неудачу. Если речь идет о пределе доказательств, то они $('div').css({ width : 300, height: 40 }); также действительны.
Независимо
26
Если свойство CSS имеет символ тире (т. Е. Переполнение текста), вам необходимо заключить в кавычки свойство. Я думаю, об этом говорят rlb.usa и Jonas.
Дан
4
@redsquare Пожалуйста, рассмотрите возможность добавления следующего в ваш ответ. Из 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
чтобы это работало, вы должны изменить синтаксис: $ ('# message'). css ({ширина: '550px', высота: '300px', 'font-size': '8pt'});
Эдвард Тангей
16
эм, спасибо всем неопытным пользователям, которые никогда не читают документацию jquery? числовые значения автоматически преобразуются в пиксельные значения kthx.
Джимми
5
Да в чем тут проблема? width: 550совершенно верно.
rfunduk
я думаю, что вы также можете использовать fontSizeбез кавычек ... мой вопрос, хотя .... как вы установите height, и width, скажем ... в то же значение .... это будет .css({ { width, height} : 300 })?
Алекс Грей
5
@alexgray прямого способа сделать это нет, но вы можете установить для каждого из них одну и ту же переменную:var x = 100; $el.css({width: x, height: x});
dave mankoff
39

Используя простой объект, вы можете соединить строки, представляющие имена свойств, с соответствующими значениями. Например, если изменить цвет фона и сделать текст более жирным, это будет выглядеть так:

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

Кроме того, вы также можете использовать имена свойств JavaScript:

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

Дополнительную информацию можно найти в документации jQuery .

Сэмпсон
источник
18

пожалуйста, попробуйте это,

$(document).ready(function(){
    $('#message').css({"color":"red","font-family":"verdana"});
})
мегаломан
источник
16

Вы также можете использовать attrвместе с style:

$('#message').attr("style", "width:550; height:300; font-size:8px" );
Сомнатх Харат
источник
10

Согласитесь с redsquare, однако стоит упомянуть, что если у вас есть свойство из двух слов, как text-alignвы бы сделали это:

$("#message").css({ width: '30px', height: '10px', 'text-align': 'center'});
Darko Z
источник
10
$("#message").css({"width" : "550px", "height" : "300px", "font-size" : "8pt"});

Также может быть лучше использовать встроенный jQuery, addClassчтобы сделать ваш проект более масштабируемым.

Источник: Как: jQuery Добавить CSS и Удалить CSS

Studio3
источник
8

Попробуй это

$(element).css({
    "propertyName1":"propertyValue1",
    "propertyName2":"propertyValue2"
})
Джанак Праджапати
источник
7

скрипт

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

Html

<div id="hello"></div>
Ризо
источник
6

Вы можете попробовать это

$("p:first").css("background-color", "#B2E0FF").css("border", "3px solid red");
Сумит Харшан
источник
1
Это не очень хороший подход, чувак. Лучше отправлять пользователю json type
Awais Qarni
6

Лучший способ использовать переменную

var style1 = {
   'font-size' : '10px',
   'width' : '30px',
   'height' : '10px'
};
$("#message").css(style1);
Джастин
источник
2

если вы хотите изменить несколько атрибутов CSS, то вы должны использовать структуру объекта, как показано ниже:

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

но это ухудшается, когда мы хотим изменить много стилей , поэтому я предлагаю вам добавить класс вместо изменения CSS с помощью jQuery, и добавление класса также более читабельно.

см. пример ниже:

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

Одним из преимуществ последнего примера перед первым является то, что если вы хотите добавить некоторые CSS-файлы onclickи хотите удалить этот CSS-файл при втором щелчке, то в последнем примере вы можете использовать.toggleClass('custom-class')

где в первом примере вы должны установить все CSS с различными значениями, которые вы установили ранее, и это будет сложно, поэтому использование опции класса будет лучшим решением.

Харицинь Гохил
источник
0

Ты можешь использовать

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

Лучший способ - использовать $ ('selector'). AddClass ('custom-class') и

.custom-class{
width:16px,
color: green;
margin: 0;
}
Акшай Ратнавас
источник