动态改变元素的颜色li不会改变子弹点的颜色

时间:2015-10-02 12:53:42

标签: jquery css google-chrome

在Chrome(版本45.0.2454.101 m)中,如果我将一个类添加到列表元素以更改其颜色,则仅在重新绘制(调整大小)窗口时更新项目符号点颜色



function include(arr, obj) {

    for(var i=0; i<arr.length; i++) {
        if (obj.indexOf(arr[i]) === 0) return true;
    }
}
&#13;
$("#a").click(function() {    
   $("#a").addClass('blue');
});
&#13;
ul li {
    color: red;
    list-style-type: disc;
    margin-left: 2em;
}
.blue {
    color: blue;
}
&#13;
&#13;
&#13;

Chrome中的错误是否可以通过代码解决? (或者它根本就是一个错误?)

2 个答案:

答案 0 :(得分:7)

可能这是一个错误,但我不会依赖标准的光盘元素。

您可以在伪元素之前使用CSS ::而不是。它更易于配置,完全由您控制。

&#13;
&#13;
$("#a").click(function() {    
   $("#a").addClass('blue');
});
&#13;
ul li {
    color: red;
    list-style-type: none;
    margin-left: 2em;
}

ul li::before {
    content: "•";
}

.blue {
    color: blue;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul>
    <li id="a">a</li>
    <li id="b">b</li>
    <li id="c">c</li>
</ul>
&#13;
&#13;
&#13;

答案 1 :(得分:3)

您可以使用假的CSS动画强制重绘,直到修复此错误。

$("#a").click(function() {    
   $("#a").addClass('blue');
});
ul li {
    color: red;
    list-style-type: disc;
    margin-left: 2em;
    -webkit-animation:1ms foo infinite; /* using prefix for webkit only */
}
.blue {
    color: blue;
    
}

@-webkit-keyframes foo { /* using prefix for webkit only */
    from { zoom: 0.99999; }
    to { zoom: 1; }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul>
    <li id="a">a</li>
    <li id="b">b</li>
    <li id="c">c</li>
</ul>

或者,您可以使用:

$("#a").addClass('blue').hide().show(0);
相关问题