通过javaScript </style>编辑特定的内联<style>

时间:2012-07-30 16:36:51

标签: javascript jquery html css

我有:

<style id=inlinestyle>
    .container {
        height: 0;
    }
    .container li {
        height: 10px;
    }
    .container li a {
                 color: pink;
    }
</style>

我希望能够在不丢失其他风格的情况下定位和编辑`.container li a'。

 $('#inlinestyle').html('#poop { color: red }');

这不会起作用,因为我会失去那里的一切。

值得一提的是,我将创建无限量的元素,因此内联样式不是一种选择。

7 个答案:

答案 0 :(得分:7)

定位要修改的元素不是更好吗?

$('#poop').css('color','red');

如果你想在这个精确元素的css中添加多个属性,那就行了:

$('#poop').css({
    'color' : 'red',
    'font-size' : '16px',
    ......
});

答案 1 :(得分:2)

$('#inlinestyle').append('.container li a { /* css here */}');

答案 2 :(得分:1)

$('.container li a').css("color", "blue");

答案 3 :(得分:0)

尝试$('#inlinestyle').append(' #poop { color: red; }');$('#poop').css('color', 'red');

之类的内容

答案 4 :(得分:0)

$('#inlinestyle').append('#poop { color: red }');

答案 5 :(得分:0)

您不应该通过JS编辑原始CSS,而是添加所需的规则以获取样式的元素:

/* What about: */
$( '.container li a' ).css( 'property', 'value' );
/* or */
$( '.container li a' ).css( {
    'property1': 'value1',
    'property2': 'value2'
} );

答案 6 :(得分:0)

这应该或多或少地符合您的要求:http://jsfiddle.net/ZH9JW/2/

这个问题是它是一个非常严格的正则表达式;或多或少一个空格,或者没有换行符,正则表达式将失败。你可以解决这个问题,但是你开始构建一个CSS解析器。我建议不要使用我的解决方案。

也许这是你可以使用的东西?如果您创建了这么多元素,它可能比$("#poop").css("color", "red");更快,但有点像黑客:

var newStyle = $("<style/>").html(".container li a { color: red }");
$("body").append(newStyle);

理想情况下,此style元素应该位于原始style元素之后的DOM中,或者具有更具体的CSS。