【发布时间】:2009-10-28 16:33:38
【问题描述】:
我在使用 jQuery 悬停方法时遇到了一些问题。
以下是相关的 JavaScript 代码:
$("#navigation > li > ul").hide();
$("#navigation > li").hover(
function() {
$(this).children("ul").slideDown(125);
},
function() {
$(this).children("ul").slideUp(125);
}
);
这是相应的 HTML:
<ul id="navigation">
<li><a href="#">Top Level Item #1</a></li>
<li>
<a href="#">Top Level Item #2</a>
<ul>
<li><a href="#">Sub-Menu Item #2-1</a></li>
<li><a href="#">Sub-Menu Item #2-2</a></li>
<li><a href="#">Sub-Menu Item #2-3</a></li>
</ul>
</li>
</ul>
当您将鼠标悬停在顶级项目上时,其中的子菜单(如果有)将下拉,并带有漂亮、快速的滑动效果。问题是当您将鼠标快速“移入”菜单并将鼠标保持在菜单将在但尚未到达的位置时:然后菜单将点击鼠标悬停动画的“结束”并弹跳回到隐藏状态,然后重复,直到您将鼠标从下拉菜单所在的位置移开。
【问题讨论】:
-
如果我对问题的理解正确,那是因为当您进入子菜单时,将调用悬停调用中的第二个函数(当指针离开匹配元素时调用的函数)。
-
有没有办法防止这种情况发生?我还是很新的 jQuery,我可以强制它在第一个完成之前不要“排队”悬停的第二个功能吗?
标签: jquery drop-down-menu hover