Лично я бы просто использовал код JavaScript для переключения между двумя классами.
Сделайте так, чтобы CSS обрисовал в общих чертах все, что вам нужно в вашем Div, МИНУСЕ к фоновому правилу, затем добавьте два класса (например, расширенный и свернутый) в качестве правил, каждый из которых имеет правильное фоновое изображение (или положение фона, если используется спрайт).
CSS с разными изображениями
.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;}
Или CSS с изображением спрайта
.div {
background: url(img/sprite.gif) no-repeat left top;
/* Other styles */
}
.expanded {background-position: left bottom;}
Затем...
Код JavaScript с изображениями
$(function){
$('#button').click(function(){
if($(this).hasClass('expanded'))
{
$(this).addClass('collapsed').removeClass('expanded');
}
else
{
$(this).addClass('expanded').removeClass('collapsed');
}
});
}
JavaScript со спрайтом
Примечание: элегантный toggleClass не работает в Internet Explorer 6, но приведенный ниже метод addClass/ removeClassбудет работать и в этой ситуации.
Наиболее элегантное решение (к сожалению, не дружественный к 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');
}
});
}
Насколько я знаю, этот метод будет работать в разных браузерах, и я чувствовал бы себя гораздо более комфортно, играя с CSS и классами, чем с изменениями URL в скрипте.