- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在导航上有一个下拉动画,其中子菜单的显示/隐藏取决于用户悬停在元素内/外。我遇到的问题是这些没有正确排队,所以当用户快速经过该元素时,菜单保持打开状态。
我试过使用链接到动画上的 .stop(true) 函数,但它似乎不起作用。
有什么建议吗?
$('.navbar-nav > .menu-item-has-children').on({
mouseenter: function() {
console.log('Hovered In');
$(this).children('.sub-menu').addClass('main-fix').stop(true, true).show('slide', {direction: 'up', duration: 250, easing: 'easeInQuint'}).removeClass('main-fix');
},
mouseleave: function() {
console.log('Hovered Out');
$(this).children('.sub-menu').addClass('main-fix').stop(true, true).hide('slide', {direction: 'up', duration: 250, easing: 'easeInQuint'}).removeClass('main-fix');
}
});
最佳答案
为什么不为此使用 CSS 和 :hover
? CSS 中的过渡还允许您为元素设置动画。除非您有支持旧浏览器的要求,否则这应该可以很好地工作,并且可以避免让您头疼的 JavaScript 问题和计时问题。
为了完整起见,这里有一个 Fiddle 展示了它的实际效果:http://jsfiddle.net/dPixie/q0tfxvwd/
CSS 的相关部分是:
#navbar .navbar-nav .menu-item .sub-menu {
...
/* no display: none! */
max-height: 0;
overflow: hidden;
-webkit-transition: max-height 250ms ease-in-out;
transition: max-height 250ms ease-in-out;
}
#navbar .navbar-nav .menu-item:hover .sub-menu {
max-height: 1000px;
}
第一部分设置正常状态,第二部分设置在悬停期间。使用最大高度而不是高度,因为它允许子菜单为任意高度(只需确保 max.height 以像素为单位并且足够大以容纳任何子菜单)。
不惜一切代价帮助某人解决问题是没有建设性的。有时重新考虑该方法是值得的。
用JS做菜单动画当然可以。但它对上述方法有什么补充吗?借助 CSS,您可以将渲染卸载到显卡上,使用内置悬停检测功能的浏览器,并使您的代码朝着新的 Web 标准发展。
除非您有非常特殊的需求,例如客户愿意为跨旧客户端的像素完美结果付费,或者非常复杂的动画取决于外部事件的时间等,否则通常不值得在 JS 中构建这些动画。如果你没有得到报酬让一切都一样,你就不应该这样做......
关于javascript - MouseEnter/MouseLeave 事件未正确排队,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27785225/
我对 mouseenter/mouseleave 函数有一些问题。 请看一下我的代码; $(".elms").live( { mouseenter: function (e) {
我在一个寻呼机中有一个顶部固定列表导航,工作正常。 我使用 jQuery 颜色插件添加了 mouseenter 和 mouseleave 颜色动画,效果也很好。 现在,如果单击链接,我想跳过 mous
我有一个指令在模板上显示学生信息列表,然后在鼠标输入时显示其他学生信息。我希望能够返回到 mouseleave 的初始状态。 尝试了所有资源,但运气不佳。 html - 这是我注入(inject)指令
我试图在鼠标输入鼠标离开事件时替换图像属性源。单击时,图像应保持事件状态。我需要 mouseleave 事件在单击后停止。到目前为止,点击后鼠标离开仍然继续,切换回图像,代码如下: jQue
我想要做的是创建一个下拉列表,当单击链接时该下拉列表会向下滑动,并根据单击的链接显示特定的隐藏 div。我希望它在单击另一个链接时在公开的下拉列表中的隐藏 div 之间优雅地切换。我们已经基本弄清楚了
有没有一种方法可以在拖动元素时检测鼠标离开? 我尝试拖放元素,如果它在视口(viewport)之外,则显示包含 div 元素的弹出窗口。 仅当我不拖动元素时才触发 mouseleave,但如果我尝试拖
如果我想鼠标进入一个div,就会显示一个元素,然后当鼠标离开时,元素就会消失。 我在 mouseenter 内有一个单击功能,因此单击时会出现一个下拉菜单。 我希望下拉菜单和元素即使在鼠标离开时也保持
所以,我的问题是只有当我以一定的速度移动光标时才会触发 MouseLeave 事件。下面是一个带有边框的拇指。单击拇指并按住鼠标按钮。缓慢移出边界 = 无事件,快速移出边界 = 事件。
我用 W3.CSS's slideshow documentation 创建了一个简单的幻灯片。您可以在这个 JS Fiddle上看到代码和幻灯片。 . 一切正常,除了在“mouseleave”事件发
鉴于下面显示的以下 html 表和脚本,我遇到了一个问题,即鼠标离开事件似乎在鼠标进入后立即触发,即使我没有将鼠标移出该行。 function highlightRows(iMainID)
嗨,我在下拉导航菜单上使用 mouseleave() ,这样当用户离开子菜单下拉菜单时,子菜单就会消失,但它似乎忽略了它,菜单仍然存在。有任何想法吗?这是网站和代码: http://www.maiag
http://jsfiddle.net/yZSEA/ $("p").hover(function() { var $this = $(this).find('span'); $this
HTML I'm div-1 I'm div-2 JS $("#div-1").bind('mouseover',function(event){ $('#div-2').stop(true,tr
抱歉,如果这看起来很基础,我是 JQuery 新手。 我的页面上有一个密码元素,我希望它能够在该框处于事件状态并且在框中键入时保持绿色,但 mouseleave 似乎优先于焦点。 这是该元素的代码:
example fiddle JavaScript $('#btn').on('mouseover', function() { $('#tt').show(); }).on('mousele
事情是这样的:我有一张 table 。当您将鼠标悬停在其上时,jQuery 会添加一些编辑按钮。当您将鼠标移出表格时,它们就会消失。问题是,如果您将鼠标移入表格,然后移到按钮上,然后移出,它们会保持在
我有像这样的菜单列表 第一个 ul 标记是从另一个框
我的表单上有一个上下文菜单,一些选项默认情况下应该禁用,但当用户右键单击面板时启用。 我写这个的方式,允许这个特定菜单项的面板有两个事件处理程序: MouseEnter -> 启用选项 MouseLe
我是 Jquery(和 JavaScript)的新手,我一直在尝试制作一个侧边栏,将鼠标悬停在图标上会显示它们各自的 div 元素(如果您愿意,可以称为“侧边栏”)。 我希望它的行为是这样的,只要您将
我试图在鼠标悬停在另一个 div 上时创建一个卷起的 div。它打开但我希望它在离开底部边框时不要关闭。是否可以使用 JS 或 JQuery?这是我当前的代码: $("#sell1").mouseen
我是一名优秀的程序员,十分优秀!