使用鼠标退出删除类
我正在使用jQuery在mouseenter / mouseleave上执行它,它似乎正在工作,但是当我退出div时。 这仅在退出实际窗口时有效。
这是我的jQuery
$(document).ready(function() { $(".pods .col").on("mouseenter", function() { $(this).find(".pod-overlay").addClass("show") }); $(".pods .col").on("mouseleave", function() { $(this).find(".pod-overlay").removeClass("show") }); });
这是我的HTML
我在这里做了一个小提琴。 我正在学习jquery,所以建议表示赞赏。
http://jsfiddle.net/34h48148/
你的function完美无缺! 问题是叠加。 你放置绝对,使它覆盖整个身体。 所以,稍微更改你的CSS,放置.pods
和.col
相对。
.pods,.col { overflow: auto; position: relative; }
更新小提琴
我在你的函数上唯一要改变的是在同一个调用者上绑定两个事件:
$(document).ready(function() { $(".pods .col").on("mouseenter", function() { $(this).find(".pod-overlay").addClass("show") }).on("mouseleave", function() { $(this).find(".pod-overlay").removeClass("show") }); });
你的方法很好,但是你在mouseleave上不起作用是因为叠加在.col
之上,因此永远不会触发mouseleave。 您可以使用pointer-events
以及其他答案建议的内容。 像这样的东西
.pod-overlay { pointer-events: none; .... }
这是更新的演示http://jsfiddle.net/dhirajbodicherla/34h48148/9/
PS:我只更改了叠加边框以显示叠加边界。
你也可以像这样使用hover
事件:
$(document).ready(function() { $(".pods .col").hover(function() { $(this).find(".pod-overlay").addClass("show") }, function() { $(this).find(".pod-overlay").removeClass("show") }); });
这是hover事件doc
但是,问题不是函数,而是与pod-overlay
类关联的CSS。
在你的css中添加这两个属性:
.pod-overlay { width:260px; height:260px; ... }
你可以使用纯CSS
.pods .col:hover .pod-overlay{ visibility: visible; } .pods .col .pod-overlay{ visibility: hidden; }
Actualy,代码正常工作,问题是你在覆盖整个页面的“.pods”类上设置了偶数…所以偶数仅在鼠标离开页面时触发
学习jquery,所以建议表示赞赏。
jQuery不需要实现需求。 尝试使用css
伪类:hover
.pod { width: 250px; height: 250px; background-color: blue; float: left; } .pod-overlay { display: none; z-index: 2; position: absolute; top: 0; left: 0; bottom: 0; right: 0; background-color: #fff; background-color: rgba(255, 255, 255, .9) } .pods .col:hover .pod-overlay { display:block; }
您应该调用的实际鼠标事件是onmouseout
$(".pods .col").on("mouseout", function() { $(this).find(".pod-overlay").removeClass("show") });