マップを作成しようとしていますが、マウスをボタンの上に置くと、このマップの特定の位置が強調表示されます。マウスがオーバーレイ イメージに入ると、本来あるべき姿で表示されますが、マウスが移動すると、ホバー ボタン内でオーバーレイ イメージが点滅し、mouseEnter イベントと mouseLeave イベントが繰り返しトリガーされます。同じ結果で、mouseOver、hover、およびmouseoutでも試しました。私は何か間違ったことをしていますか?
HTML:
<div id="map">
<img src="images/map/map.png" />
<img src="images/map/mapHover.png" id="hoverhighlands" class="hoverButton"/>
<img src="images/map/mapHover.png" id="hovernorth" class="hoverButton"/>
<img src="images/map/mapHover.png" id="hovercentral" class="hoverButton"/>
<img src="images/map/mapHover.png" id="hoverlothian"class="hoverButton" /> <img src="images/map/mapHover.png" id="hoverwest" class="hoverButton" />
<img src="images/map/central.png" class="mapOverlay" id="central" />
<img src="images/map/highlands.png" class="mapOverlay" id="highlands" />
<img src="images/map/lothian.png" class="mapOverlay" id="lothian" />
<img src="images/map/northeast.png" class="mapOverlay" id="north"/>
<img src="images/map/west.png" class="mapOverlay" id="west"/>
</div>
JS:
function setMapOverlays() {
$(".mapOverlay").hide();
$(".hoverButton").mouseenter(
function () {
var id = $(this).attr('id');
id = id.substr(5);
showOverlay(id);
}).mouseleave(function () {
console.log('mouseleave');
var id = $(this).attr('id');
id = id.substr(5);
hideOverlay(id);
})
}
function showOverlay(id) {
$('#' + id).show();
}
function hideOverlay(id) {
$('#' + id).hide();
}
編集
わかりました、なぜ機能しないのかわかりました。.show() 関数がトリガーされると、オーバーレイ画像が hoverButtons の上に配置され、onmouseleave がトリガーされます。
z-index:2 を hoverButton に、z-index:1 を mapOverlay に配置することを確認できました。このようにして、マウスを動かしてもイベントは発生しません。
だから私は一時的な修正をしています。onmouseleave イベントを hoverButtons の代わりに mapOverlays に移動すると、うまくいきました。function setMapOverlays() { $(".mapOverlay").hide(); $(".hoverButton").mouseenter( function () { console.log('enter'); var id = $(this).attr('id'); id = id.substr(5);
showOverlay(id);
});
$('.mapOverlay').mouseleave(function () {
console.log('mouseleave');
hideOverlay($(this));
})
}
これは機能しますが、望ましい動作ではありません。マウスが hoverButton の外に移動したときにオーバーレイを非表示にします。それを行う方法に関する提案はありますか?
私がやっていることを正確に説明するのに役立つ2つの画像: