我正在尝试使用此结构创建菜单:
<ul id="primary" class="menuOptions">
<li>Item 1</li>
<li>Item 2
<div id="secondary">
<ul class="menuOptions">
<li>subItemOne</li>
<li>subItemTwo</li>
</ul>
</div>
</li>
<li>Item 3</li>
</ul>
我用这个脚本制作动画:
$j('.menuOptions li').each(function(i){
//applies to all menu options
$j(this)
.bind('mouseover',function() {
$j(this).toggleClass("over");
})
.bind('mouseleave',function() {
$j(this).toggleClass("over");
});
});
我发现当鼠标移过辅助菜单项时,在主菜单项上调用了toggleClass函数。我知道在老鼠离开孩子之前不应该调用mouseleave,所以我很困惑。
我是否需要以某种方式主动停止事件传播?
谢谢!
添
答案 0 :(得分:4)
您可以尝试使用悬停功能。
$j('ul.menuOptions li').hover(function(){
$j(this).toggleClass("over");
} ,
function() {
$j(this).toggleClass("over");
}
);
答案 1 :(得分:3)
我怀疑问题是您将鼠标与鼠标鼠标 连接鼠标。
请参阅http://api.jquery.com/category/events/mouse-events/
一般来说,你想要的联结是:
使用其他组合可能会导致意外行为。 鼠标 over 和鼠标 out 是较旧的事件,虽然偶尔会有用,但通常不如鼠标输入 ,鼠标保留 。
你也可以尝试使用简单的东西 悬停 ,完全等同于使用鼠标输入 和鼠标离开