让我先解释一下问题,我使用的UL结构如下:
<ul onmouseover="smenu_over(this)" onmouseout="smenu_out(this)" class="sub-menu" style="left:0;">
<li><a href="#">Navigation Item with long text do text wrap</a></li>
<li><a href="#">Sub nav item</a></li>
<li><a href="#">Sub nav item</a></li>
<li style="border-bottom:0;"><a href="#">Sub nav item</a></li>
</ul>
JS功能
function smenu_over(obj) {
var a = obj.parentNode.childNodes[0];
if(a!=null) {
var top = $(".topnav_icons").length && !$(".logo_t").length ? "-45px" : "-34px";
setBckPosition(a, top);
a.style.color = "#fff";
}
}
我需要在此函数中应用event.stopPropagation
,该函数在mouseover
事件发生时调用。
请帮我的代码应用event.stopPropagation
?
2条答案
按热度按时间ilmyapht1#
你是说这个
ubof19bj2#
您可以将当前处理程序从内联状态中删除,如下所示:
然后可以在jQuery中绑定这些函数,如下所示:
在你的函数中,不要使用
obj
,而是使用this
,它将引用你所悬停的元素,如下所示:这里的重要区别是
.hover()
Map到mouseenter
和mouseleave
事件(* 而不是 *mouseover
/mouseout
),这些事件在进入/离开子节点时 * 不 * 在父节点上触发,因此无需停止传播,它们已经按照您想要的方式运行。你可能可以进一步优化,但没有看到你的其他代码,我不想给予你任何坏的建议,这将解决目前的问题,虽然。