2010-11-20 15 views
1

Ich habe ein div mit seiner Standardklasse, die es einen grünen Hintergrund gibt. Wenn die Maus gedrückt wird, möchte ich den Hintergrund in Rot ändern, bis die Maus losgelassen wird.jQuery/css addClass() Stil überschreiben vorherige Stileigenschaft

Ich habe versucht, Class eine Klasse mit einer roten Hintergrundfarbe hinzuzufügen. Die neuen Klasseneigenschaften scheinen die vorhandenen Eigenschaften nicht zu überschreiben. Ich habe die neue Klasse nach dem Original in der .css-Datei aufgeführt.

css

#calc_no { background-color: #cd9781; } 
#calc_yes { background-color: #8fba8e; } 
.button_click { background-color: red; } 

jscript

$('.button').live('mousedown', function() { 
    $(this).addClass("button_click"); 
}); 
$('.button').live('mouseup', function() { 
    $(this).removeClass('button_click'); 
}); 

html

<div id="calc_yes" class="kp_button button">Yes</div> 

Antwort

3

Das Problem ist, dass IDs Klassendefinitionen überschreiben. Ändern Sie den Hintergrund in Klassen anstelle von IDs

+0

Dank funktioniert, das funktioniert perfectl.y –

+0

danken aletzo Auch er wurde es zuerst (während Ich schrieb meins). Upvotes sind eine gute Möglichkeit, in Stack Overflow zu denken. Viel Glück beim Programmieren, Seemann! –

1

ids> Klassen

Sie .calc_no verwenden könnte und .calc_yes statt

+0

Danke, das perfekt –

4

In CSS haben verschiedene Arten von Selektoren unterschiedliche Gewichtungen. Eine ID hat ein größeres Gewicht als eine Klasse, die beispielsweise ein größeres Gewicht als ein Tag-Name hat. Ihre ID-basierten Stile überschreiben also die klassenbasierten Stile.

Für diesen einfachen Fall versuchen, das !important Schlüsselwort:

.button_click { background-color: red !important; } 

http://www.w3.org/TR/CSS2/cascade.html#specificity

+1

Diese ID ist eine korrekte Antwort, aber die Verwendung von '! Wichtig 'sollte eine Lösung für den letzten Ausweg sein, da sie die Kaskadenregeln bricht und Probleme verursacht, die den Code später beibehalten. –

Verwandte Themen