Personalmente userei semplicemente il codice JavaScript per passare tra 2 classi.
Chiedi al CSS di delineare tutto ciò di cui hai bisogno sul tuo div MENO la regola di sfondo, quindi aggiungi due classi (ad esempio: espanso e compresso) come regole ognuna con l'immagine di sfondo corretta (o la posizione di sfondo se usi uno sprite).
CSS con immagini diverse
.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;}
O CSS con sprite di immagini
.div {
background: url(img/sprite.gif) no-repeat left top;
/* Other styles */
}
.expanded {background-position: left bottom;}
Poi...
Codice JavaScript con immagini
$(function){
$('#button').click(function(){
if($(this).hasClass('expanded'))
{
$(this).addClass('collapsed').removeClass('expanded');
}
else
{
$(this).addClass('expanded').removeClass('collapsed');
}
});
}
JavaScript con sprite
Nota: l'elegante toggleClass non funziona in Internet Explorer 6, ma il metodo sottostante addClass
/ removeClass
funzionerà bene anche in questa situazione
La soluzione più elegante (purtroppo non compatibile con Internet Explorer 6)
$(function){
$('#button').click(function(){
$(this).toggleClass('expanded');
});
}
$(function){
$('#button').click(function(){
if($(this).hasClass('expanded'))
{
$(this).removeClass('expanded');
}
else
{
$(this).addClass('expanded');
}
});
}
Per quanto ne so questo metodo funzionerà attraverso i browser e mi sentirei molto più a mio agio giocando con CSS e classi che con le modifiche all'URL nello script.