2015-10-02 132 views
10

在Chrome(版本45.0.2454.101 m)中,如果向列表元素添加类以更改其颜色,则子弹点颜色仅为更新时重绘窗口(调整)动态更改元素li的颜色不会更改子弹点的颜色

$("#a").click(function() {  
 
    $("#a").addClass('blue'); 
 
});
ul li { 
 
    color: red; 
 
    list-style-type: disc; 
 
    margin-left: 2em; 
 
} 
 
.blue { 
 
    color: blue; 
 
}
<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>

它是在浏览器的错误,可以用代码来解决? (或者它是一个错误?)

+0

子弹+ “A” 上单击这两个变化对我来说在V46 –

+1

使用Chrome,我刚才单击字母a和它改变了蓝色。其余的保持红色但是 – Hexana

+2

同样的错误在这里。 '$(“#a”)。addClass('blue')。hide()。show(0);'会解决它,但... –

回答

8

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

您可以使用CSS :: before伪元素代替。它更具可配置性,完全在您的控制之下。

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

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

 
.blue { 
 
    color: blue; 
 
}
<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>

3

你可以使用一个假的CSS动画强制重绘,直到这个bug已经修复。

$("#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);