Может быть, вы могли бы объявить объект, который содержит отношение между классом и положением y?Немного похоже на это:
var positions={
'over-1': -120,
'over-2': -240,
'over-3': -360,
'over-4': 0
}
и затем перепишите ваш код следующим образом:
$('.b-test a').addClass('over-1')
$('.b-test a').live("mouseover", function()
{
var pos=positions[$(this).attr('class')];
$(this).css("background-position", "0 "+pos+"px");
});
конечно, это предполагает, что у рассматриваемых элементов только один класс.
Редактировать
Если ваши элементы имеют или могут иметь более одного класса, вы можете выполнить итерацию по элементам-объектам, чтобы проверить, какой это, например:
$('.b-test a').addClass('over-1')
$('.b-test a').live("mouseover", function()
{
var firstclass='',nextclass=false, classchanged=false;
for(className in positions)
{
if(firstclass=='')
{
firstclass=className;
}
if($(this).hasClass(className))
{
var pos=positions[className];
$(this).css("background-position", "0 "+pos+"px");
$(this).removeClass(className);
nextclass=true;
}
else if(nextclass)
{
$(this).addClass(className);
nextclass=false;
classchanged=true;
}
}
if(!classchanged)
{
$(this).addClass(firstclass);
}
});