Ich persönlich würde nur den JavaScript-Code verwenden, um zwischen zwei Klassen zu wechseln.
Lassen Sie das CSS alles skizzieren, was Sie auf Ihrem div MINUS als Hintergrundregel benötigen, und fügen Sie dann zwei Klassen (z. B. erweitert und reduziert) als Regeln mit jeweils dem richtigen Hintergrundbild (oder der Hintergrundposition bei Verwendung eines Sprites) hinzu.
CSS mit verschiedenen Bildern
.div {
/* button size etc properties */
}
.expanded {background: url(img/x.gif) no-repeat left top;}
.collapsed {background: url(img/y.gif) no-repeat left top;}
Oder CSS mit Image Sprite
.div {
background: url(img/sprite.gif) no-repeat left top;
/* Other styles */
}
.expanded {background-position: left bottom;}
Dann...
JavaScript-Code mit Bildern
$(function){
$('#button').click(function(){
if($(this).hasClass('expanded'))
{
$(this).addClass('collapsed').removeClass('expanded');
}
else
{
$(this).addClass('expanded').removeClass('collapsed');
}
});
}
JavaScript mit Sprite
Hinweis: Die elegante toggleClass funktioniert in Internet Explorer 6 nicht, aber die folgende addClass
/ removeClass
Methode funktioniert auch in dieser Situation einwandfrei
Die eleganteste Lösung (leider nicht Internet Explorer 6-freundlich)
$(function){
$('#button').click(function(){
$(this).toggleClass('expanded');
});
}
$(function){
$('#button').click(function(){
if($(this).hasClass('expanded'))
{
$(this).removeClass('expanded');
}
else
{
$(this).addClass('expanded');
}
});
}
Soweit ich weiß, funktioniert diese Methode in allen Browsern, und ich würde mich beim Spielen mit CSS und Klassen viel wohler fühlen als bei URL-Änderungen im Skript.