我有一個由兩個深度的四個按鈕組成的網格,比如800px寬×400px深。將鼠標懸停在任何按鈕上都會顯示一個以按鈕爲中心的較小圖層(例如700 x 300像素)。mouseleave的條件邏輯
我將mouseenter和mouseleave事件附加到指定給所有按鈕的類中,該類爲所有按鈕交換img src,並使用單獨的函數顯示每個按鈕的特定圖層元素。
因此,當您將鼠標放在任何按鈕上時,所有按鈕都會變灰,並在其上方顯示特定圖層,並且當鼠標離開按鈕時,該圖層將隱藏並且按鈕返回到默認狀態。
這可以正常工作,但我想防止按鈕在鼠標位於可見圖層上時變回默認狀態。因此,如果將鼠標從按鈕移動到疊加在其上的圖層上,則所有按鈕都保持灰色。如果鼠標離開圖層,則該圖層將隱藏,所有按鈕將恢復爲其默認狀態。
我試過創建一個全局javascript var來防止mouseleave事件發生,當鼠標移動到可見圖層上時,並且當鼠標進入可見圖層時設置該var,但是mouseleave事件在我可以設置之前觸發全球變種...我陷入了雞與雞蛋的循環?
我設置我的mouseenter /離開這裏:
window.lyrEntered = false;
jQuery(function() {
$(".img-swap").mouseenter(
function() {
$(".img-swap").each(function() {
this.src = this.src.replace("_on", "_off");
});
});
$(".img-swap").mouseleave(
function() {
//if layer entered, keep button state
if (lyrEntered) {
} else {
//reset buttons if layer entered is false
$(".img-swap").each(function() {
this.src = this.src.replace("_off", "_on");
//reset button state
window.lyrEntered = false;
});
};
});
});
function showIt(lyr) {
$(lyr).show();
}
上的每個按鈕,我設置圖層顯示:
<img src="images/img1.jpg" alt="img1" class="img-swap" id="img1" onmouseover="showIt('#layer1');" onmouseout="$('#layer1').hide();" />
,並在每一層上,我想設置全局變量var以防止mouseleave事件觸發並將按鈕重置爲其默認狀態:
<div id="layer1" onmouseout="$('#layer1').hide();window.lyrEntered = false;" onmouseover="$('#layer1').show();window.lyrEntered = true; ">[content here]</div>
但當然,在這裏設置全局變量爲時已經太晚了,因爲在全局變量設置爲true之前觸發了按鈕的mouseleave事件?
http://jsfiddle.net /試着在這裏舉個例子,這樣每個人都可以看到你在實際操作中描述的內容。 –