2015-10-02 8 views
10

In Chrome (Version 45.0.2454.101 m) Wenn ich eine Klasse zu einem Listenelement hinzufügen, um seine Farbe zu ändern, ist nur die Aufzählungsfarbe aktualisiert, wenn das Fenster neu gezeichnet wird (Größe angepasst)Dynamische Änderung der Farbe eines Elements li ändert nicht die Farbe des Aufzählungszeichens

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

einen Fehler in Chrome ist es, die mit dem Code gelöst werden kann? (oder ist es ein Fehler überhaupt?)

+0

Kugel + "a" beide Änderung auf klicken für mich in v46 –

+1

Mit Chrome, ich habe geklickt nur die Buchstaben a und es änderte sich blau. Der Rest bleibt rot aber – Hexana

+2

Der gleiche Bug hier. '$ (" # a "). addClass ('blau'). hide(). show (0);' würde es beheben, aber ... –

Antwort

8

Wahrscheinlich ist es ein Bug, aber ich würde nicht auf die Standard-CD-Elemente verlassen.

Sie könnten stattdessen CSS :: vor Pseudo-Element verwenden. Es ist viel konfigurierbarer und unterliegt vollständig Ihrer Kontrolle.

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

Sie die repaint mit einem gefälschten CSS-Animation zwingen könnte, bis dieser Fehler behoben worden ist.

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

Alternativ könnten Sie verwenden:

$("#a").addClass('blue').hide().show(0); 
Verwandte Themen