如何在不解析/标记化的情况下使用Javascript / jQuery应用CSS字符串来检索属性 – 值对?
我有一些字符串forms的CSS, 例如
border: solid 1px #0000ff; background-color: #ffff00;
我想将CSS应用于
。 但是使用jQuery来应用CSS的所有示例都涉及使用
css
方法,并且要走这条路线,我必须用分号( ;
)分割CSS字符串以检索属性 – 值对,然后通过(:)分割检索属性和值,然后执行
$('myDiv').css(property, value);
有没有办法从字符串forms直接应用CSS?
我担心如果CSS值可以包含那些字符, 例如在url
子值中,那么CSS(分号和冒号)的这种天真解析将会失败。
您可以检索现有的style
属性,然后设置一个新属性:
var target = $("#target"); target.attr("style", target.attr("style") + "; " + yourString);
实例 | 资源
假设使用style
属性在元素上没有设置内联样式,则以下内容将起作用:
$("#foo").attr('style', 'border: solid 1px #0000ff; background-color: #ffff00;');
示例小提琴
请注意,这不是一个理想的解决方案。 一个更好的方法是将所需的样式放在一个类中,然后使用addClass()
。
首先使用选择器获取div元素:
var div = document.getElementById("myDiv"); // myDiv is the id right?
然后获取当前的css:
var css = div.getAttribute("style");
如果它为null
则将其设置为新样式。 否则追加新风格:
var style = 'border: solid 1px #0000ff; background-color: #ffff00;'; if (css === null) css = style; else css += style;
最后更新div的样式:
div.setAttribute("style", css);
而已。 看演示: http : //jsfiddle.net/xUWzw/
还有另一种添加基于字符串的样式的方法。 如果下面是样式字符串 –
border: solid 1px #0000ff; background-color: #ffff00;
然后
var div = document.getElementById('myDiv'); div.style.cssText = 'border: solid 1px #0000ff; background-color: #ffff00;';
小提琴: https : //jsfiddle.net/eja0zea4/
你可以使用jQuery .attr()函数将css字符串直接添加到style属性中,但更好的方法是使用jQuery .addClass()函数为div分配一个类,并将css属性添加到类。
为什么不创建一个CSS类,只使用jQuery中的addClass removeClass方法
.myClass { border: solid 1px #0000ff; background-color: #ffff00; }
然后
$(div).addClass('myClass');
只需使用jQuery的函数.attr('style', 'somthing...')
,它非常易于使用,您不必考虑容错。
您可以将其作为对象进行检索
$('myDiv').css({property:"value",property:"value",property:"value"});