Можно сделать небольшую задержку перед началом анимации. Нужна она для запуска анимации после проверки какого-нибудь флажка, который и будет переключаться на mouse(over|out). Бонус: если будет быстрое случайное проведение по объекту, то анимации не будет.
var waiter,flag; //глобальные для этих функций
function expande(){ if(flag)resize_expanse() }
function reduce(){ if(!flag)resize_reduction() }
function anim_over(){//забиндить на mouseover
flag = true;
clearTimeout(waiter);
waiter = setTimeout(expande,50);
}
function anim_out(){//на mouseout
flag = false;
clearTimeout(waiter);
setTimeout(reduce,50);
}
Но все равно, легче через фреймворк, потому что эти функции начнут соперничать друг с другом. А как это предотвратить - целая статейка.
Проверка тегов будет не нужна.