Вы можете удалить ваши текущие обработчики как встроенные, как это:
<ul class="sub-menu" style="left:0;">
Затем вы можете связать эти функции в jQuery, например так:
$(function() { //run when DOM is ready
$("ul.sub-menu").hover(smenu_over, smenu_out);
});
В ваших функциях вместо obj
просто используйте this
, он будет ссылаться на элемент, который вы наводите, например:
function smenu_over() {
var a = this.parentNode.childNodes[0];
if(a!=null) {
var top = $(".topnav_icons").length && !$(".logo_t").length ? "-45px" : "-34px";
setBckPosition(a, top);
a.style.color = "#fff";
}
}
Важным отличием здесь является .hover()
, сопоставляемое с mouseenter
и mouseleave
событиями ( не * 1023) *mouseover
/ mouseout
), которые не стреляют по родителю при входе / выходе из ребенка, поэтому не нужно останавливать распространение, они уже ведут себя как хочешь.
Вероятно, вы можете оптимизировать это намного дальше, но, не видя ваш другой код, я не хочу давать вам плохих советов, хотя это исправит текущую проблему.