Ja osobiście używałbym kodu JavaScript do przełączania między 2 klasami.
Poproś CSS, aby nakreślił wszystko, czego potrzebujesz na div MINUS, regułę tła, a następnie dodaj dwie klasy (np. Rozwinięte i zwinięte) jako reguły, z których każda ma prawidłowy obraz tła (lub pozycję tła, jeśli używasz duszka).
CSS z różnymi obrazami
.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;}
Lub CSS z obrazkiem
.div {
background: url(img/sprite.gif) no-repeat left top;
/* Other styles */
}
.expanded {background-position: left bottom;}
Następnie...
Kod JavaScript z obrazkami
$(function){
$('#button').click(function(){
if($(this).hasClass('expanded'))
{
$(this).addClass('collapsed').removeClass('expanded');
}
else
{
$(this).addClass('expanded').removeClass('collapsed');
}
});
}
JavaScript z ikoną
Uwaga: elegancki toggleClass nie działa w Internet Explorerze 6, ale poniższa addClass/ removeClassmetoda również będzie działać dobrze w tej sytuacji
Najbardziej eleganckie rozwiązanie (niestety nie przyjazne dla Internet Explorera 6)
$(function){
$('#button').click(function(){
$(this).toggleClass('expanded');
});
}
$(function){
$('#button').click(function(){
if($(this).hasClass('expanded'))
{
$(this).removeClass('expanded');
}
else
{
$(this).addClass('expanded');
}
});
}
O ile wiem, ta metoda będzie działać w różnych przeglądarkach i czułbym się znacznie bardziej komfortowo grając z CSS i klasami niż ze zmianami adresów URL w skrypcie.