【发布时间】:2015-08-15 12:50:16
【问题描述】:
所以我有一个简单的#container div 设置,其中包含一个#field div。 我还有一个不可见的#hover 跨度,它跟随鼠标移动(居中)并在悬停在#field 上时变得可见。
HTML:
<body>
<div id="container" >
<div id="field"></div>
</div>
<span id="mouseHover" ></span>
</body>
JS:
$("#field").on({
mousemove: function (e) {
var left = parseInt($("#container").css("left")) || 0;
var top = parseInt($("#container").css("top")) || 0;
var newX = e.pageX - left - parseInt($("#mouseHover").css("width")) / 2;
var newY = e.pageY - top - parseInt($("#mouseHover").css("height")) / 2;
$("#mouseHover").css({ left: newX, top: newY });
console.log("MMove");
},
mouseenter: function(e){
$("#mouseHover").show();
console.log("MEnter");
},
mouseleave: function(e){
$("#mouseHover").hide();;
console.log("MLeave");
}
});
当悬停在字段上时,只要我移动鼠标,它就会触发无数 mouseenter 和 mouseleave(+ 预期的 mousemove)事件。似乎是这种情况,因为#hover 跨度以鼠标为中心,每次我移动鼠标时,我在技术上离开#field 并输入#hover,然后离开#hover 并一次又一次地输入#field,导致#hover连续显示和隐藏。
我有一个解决方案是不将#hover 围绕鼠标居中,因此鼠标不会触及跨度的边界,因此不会离开#field。但我希望它居中^^
另一个是给跨度一个负的z-index,这不是真正的解决方案,因为#hover一旦获得bgcolor就会消失在#field后面。
JSFiddle with the problem (#hover is "flashing" when centered around mouse)
这里的正确方法是什么:)?
【问题讨论】:
标签: javascript jquery html css