我正在尝试在图像上叠加DIV。我正在使用mouseenter和mouseleave事件这样做。我正在使用Knockout进行数据绑定。
<ul class="gallery" data-bind="foreach: images">
<li>
<img data-bind="attr: {src:tUrl},event: {mouseenter: $parent.showOverlay, mouseleave: $parent.hideOverlay}" />
</li>
</ul>
<div class="list-overlay overlay">
<img src="/Content/images/play.png" /> Watch
</div>
使用Javascript:
showOverlay: function (data, event) {
var position = $(event.currentTarget).position();
var height = $(event.currentTarget).innerHeight();
var width = $(event.currentTarget).innerWidth();
$(".list-overlay").css("top", parseInt(position.top) + parseInt(height) - 40);
$(".list-overlay").css("left", position.left);
$(".list-overlay").css("width", width)
$(".list-overlay").show();
},
hideOverlay: function () {
$(".list-overlay").hide();
}
以上代码可以很好地显示叠加层。如果我开始在覆盖层上移动鼠标,它会开始闪烁,因为它会一次又一次地触发mouseleave,然后是mouseenter。我也试过使用mouseleave和mouseout,但行为是一样的。
答案 0 :(得分:0)
您还需要将mouseleave绑定到叠加层。并在开始时hideOverlay()检查指针是否正在进入叠加层(来自图像)或图像(来自叠加层),如果是,则返回停止该函数,以检查是否可以使用event.relatedTarget