次のシナリオがあります。ラベルのマウスオーバー イベントで、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();
}
}
};
何か助けてください。