вот функция срабатует только когда курсор ушел с элемента а не ушел на потомка
function hover (options) {
options.elem.onmouseover = ElemMouseAction;
options.elem.onmouseout = ElemMouseAction;
function ElemMouseAction (evt) {
var related, Call;
var e = evt || event;
if(e.type == 'mouseover'){
Call = options.over;
related = e.relatedTarget || e.fromElement;
} else {
Call = options.out;
related = e.relatedTarget || e.toElement;
}
while (related && related != this) {
related = related.parentNode;
}
if(related == this) return;
Call();
}
}
//пример вызова
hover({
elem: document.getElementById('elem'),
over:function () {//функция для mouseover
....
},
out:function () {//функция для mouseout
....
},
})