次のシナリオがあります。ラベルのマウスオーバー イベントで、div を表示します。div 内で選択を行うには、div を開いたままにする必要があります。ラベルの mouseout イベントで、div が消える必要があります。問題は、カーソルがラベルから div に移動すると、ラベルの mouseout イベントが発生し、そこに到達する前に div が閉じられることです。グローバルブール変数と呼ばれる変数がcanClose
あり、それを閉じるか開いたままにする必要がある場合に応じて、true または false に設定します。この目的のために、ラベルの mouseout イベントで div を閉じる機能を削除しました。以下はサンプルコードです。
EDIT
アレックスも実行可能な解決策を提供しましたが、私は問題の回避策を見つけました。1.5 秒で実行される関数をmouseleave
使用して、ラベルにもイベントを追加しました。setTimeout
この時間は、ユーザーが開いている div にカーソルを合わせるのに十分な時間を与えるため、canClose
再び false に設定されます。
$("#label").live("mouseover", function () {
FRAMEWORK.RenderPopupCalendar();
});
$("#label").live("mouseout", function () {
setTimeout(function(){
if(canClose){
FRAMEWORK.RemovePopupCalendar();
}
},1500);
});
this.RenderPopupCalendar = function () {
FRAMEWORK.RenderCalendarEvents();
}
};
this.RenderCalendarEvents = function () {
$(".popupCalendar").mouseenter(function () {
canClose = false;
});
$(".popupCalendar").mouseleave(function () {
canClose = true;
FRAMEWORK.RemovePopupCalendar();
});
}
this.RemovePopupCalendar = function () {
if (canClose) {
if ($(".popupCalendar").is(":visible")) {
$(".popupCalendar").remove();
}
}
};
何か助けてください。