我有以下场景:在标签的鼠标悬停事件中,我显示一个 div。div 必须保持打开状态才能在 div 中进行选择。在标签的 mouseout 事件中,div 必须消失。问题是当我的光标从标签移动到 div 时,会触发标签的 mouseout 事件,这会在我到达那里之前关闭 div。我有一个名为的全局布尔变量canClose
,我根据必须关闭或保持打开的情况将其设置为 true 或 false。为此,我删除了在标签的 mouseout 事件上关闭 div 的功能。下面是一些示例代码。
编辑
我找到了解决我的问题的方法,尽管亚历克斯也提供了一个可行的解决方案。我mouseleave
还在标签上添加了一个事件,其setTimeout
功能将在 1.5 秒内执行。这将给用户足够的时间将鼠标悬停在打开的 div 上,该 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();
}
}
};
请问有什么帮助吗?