覆盖对话框悬停事件
Overlay interrups hover event
更新:
被要求包括我的HTML,注意这是使用Handlebars为我的NodeJS代码:
<div id='grid'>
{{#each projects}}
<img src='{{image_path}}' id='image-{{id}}' class='gridImage'>
<div id='overlay-image-{{id}}' class='overlay'>
<div class='detail'>
<span style='font-size: 18px; font-family:OpenSans-Bold'>{{name}}</span>
<br><br>
{{shortDescription}}
<br><br>
Made by {{developers}}
</div>
</div>
{{/each}}
</div>
我有一个图像网格,当你将鼠标悬停在每个图像上时,它会使用div覆盖告诉你关于图像的一些信息。就像这样。
现在,下面是jQuery代码:
$('.gridImage').mouseover(function() {
$('#overlay-'+$(this).attr('id')).css({
'top': $(this).position().top,
'left': $(this).position().left,
'right': $(this).position().left,
'bottom': $(this).position().bottom,
'width': $(this).width(),
'height': $(this).height()
}).fadeIn(150);
});
$('.gridImage').mouseout(function() {
$('#overlay-'+$(this).attr('id')).fadeOut(150);
});
从本质上讲,这段代码检测当你将鼠标悬停在图像上时,它会根据它是哪个图像(id)找到正确的(div)覆盖,并将其拍打在图像上。现在,因为div完全覆盖了图像,所以调用mouseout
并导致覆盖淡出。
很简单,这就是为什么我把鼠标放在图像上,它在覆盖中淡出,然后淡出——基本上它会闪烁
我该怎么解决这个问题?
您可以尝试直接在覆盖图而不是图像上设置mouseout事件。我还觉得使用一些CSS 可能有更好的解决方案
尝试将mouseover
/mouseout
更改为mouseenter
/mouseleave
。
编辑
这是我使用的jsfiddle:
http://jsfiddle.net/ax9X5/2/
编辑2
由于.overlay
不是.gridImage
的子元素,因此上述解决方案要求将两者作为子元素放入容器中,并将ID和mouseenter移动到该容器中。
玩得开心!
相关文章:
- 鼠标悬停事件影响列表中所有行中的按钮,而不仅仅是特定按钮
- 如何在asp:linkButton上显示鼠标悬停事件上的图像
- 当鼠标也在触摸另一个元素时,d3.js鼠标悬停事件未被触发
- Jquery 悬停事件卡在克隆元素上
- 鼠标悬停事件不会触发以触发 D3 中的单击事件
- 在悬停事件中创建一次性操作
- Kango 浏览器扩展开发中的鼠标悬停事件弹出窗口
- 覆盖对话框悬停事件
- Raphael悬停事件和调整大小框在第三次鼠标悬停后发生故障
- 定位将禁用悬停选择器和鼠标悬停事件
- 在余烬中传播悬停事件
- 创建随机图像交换并禁止鼠标悬停事件
- 每个元素有多个鼠标悬停事件
- Highcharts点击事件返回“;悬停”;state而不是“state”;选择“;状态
- 使用JavaScript事件模拟悬停
- 如何使用if hasClass条件禁用jQuery mouseleave事件?//悬停动画
- onmouseover事件仅在第二次鼠标悬停后才起作用
- 在完整日历中添加事件悬停文本
- 在事件悬停或使用jquery单击时更改当前图像
- jquery mega下拉菜单插件(dcMegaMenu)如何改变事件悬停点击窗口大小