我想創建一個地圖,當我將鼠標懸停在按鈕上時,此地圖的某個位置應該突出顯示。當鼠標進入疊加圖像時,它應該是顯示的,但是當鼠標移動時,在懸停按鈕的內部,疊加圖像會閃爍,並且會重複觸發mouseEnter和mouseLeave事件。我也嘗試使用mouseOver,懸停和鼠標移出相同的結果。難道我做錯了什麼?爲什麼mouseleave一直在觸發?
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()函數觸發我的覆蓋圖像放置在hoverButton上時,觸發onmouseleave。
我設法驗證在mapOverlay上的hoverButton和z-index:1上放置z-index:2。這樣,當我移動鼠標時,事件不會被觸發。
所以我有一個臨時修復。將onmouseleave事件移動到我的mapOverlays而不是我的hoverButtons中,這個技巧。 函數setMapOverlays(){ $(「。mapOverlay」)。hide(); ().http:$(「。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關於如何做到這一點的任何建議
兩個圖像,以幫助解釋。?正是我在做什麼:
嘗試在'mouseleave'函數後面放一個分號。'hideOverlay(ID); });' – keyboardP
謝謝,但它沒有幫助。我想我在覆蓋層上做錯了什麼。也許當我在懸停按鈕上顯示圖像時,它會觸發鼠標離開,因爲按鈕被圖像覆蓋了? – caiocpricci2