2013-07-03 2 views
0

Я пытаюсь создать объект JSON перед обновлением CSS элемента, но CSS не обновляется для элемента.Элемент обновления CSS от JSON

Мой код:

var style = $.parseJSON("{\"" + attrName + "\":\"" + $(this).val() + "\"}");         
elContainer.css(style); 
+0

Слишком много закрытых котировок, tha t javascript даст вам несколько синтаксических ошибок. – Tallmaris

+1

@Tallmaris: Ну, это даст синтаксические ошибки, но не из-за слишком большого количества закрытых котировок. Ошибки синтаксиса исходили из отсутствия конкатенаторов строк ('+'), правильно? – Travesty3

+0

Да, вот что я имел в виду ... Я был в спешке, извините :) – Tallmaris

ответ

2

Почему вы делаете строку JSON, а затем разбор его, вместо того, чтобы просто сделать объект JS?

Это то, что вы должны делать, если я не недоразумение:

var style = {}; 
style[attrName] = $(this).val(); 
eleContainer.css(style); 

Или, если вы действительно просто установив один атрибут CSS, вы могли бы сделать, как это было предложено @Nick, как это:

BTW, если это ваш фактический код, вы, вероятно, будете получать ошибки, так как вам не хватает конкатенатора +.


ОБНОВЛЕНИЕ:

.css() является установка для набора соответствующих элементов один раз. Он не создает постоянное правило CSS, которое применяется к элементам, которые еще не существуют.

Если вы действительно хотите создать правило CSS вместо применения определенных стилей CSS к набору определенных элементов, то вы могли бы динамически создать <style> тег:

$("<style> .container { "+ attrName +": '"+ $(this).val() +"'; } </style>") 
    .appendTo('body'); 

Смотрите также: Create a CSS rule/class with jQuery at runtime

+0

он не работал для динамически добавленных элементов , но отлично работает для статических элементов – Vishal

+0

@ user2538632: См. Обновленный ответ. – Travesty3

1

Вы можете установить один атрибут CSS без необходимости создания объекта и, конечно, без разбора JSON:

eleContainer.css(attrName, $(this).val()); 
Смежные вопросы