如何阻止Mouseleave触发出现在目标上的元素?

时间:2014-06-17 17:29:53

标签: javascript jquery jquery-ui-datepicker mouseleave

jQuery的mouseleave似乎触发了任何覆盖元素。我不希望这些覆盖元素被视为我的目标区域“外部”。这是一个使用jQueryUI中的datepicker的简单示例:

http://jsfiddle.net/6Wm9L/

$("#datepicker").datepicker({});

$(".wrapper")
.mouseenter(function(){
    $("#status").html("Status: Mouse is INSIDE");
})
.mouseleave(function(){
    $("#status").html("Status: Mouse is OUTSIDE");
});

请注意,当鼠标位于datepicker上时会触发mouseleave。什么是一个很好的解决方案,以防止这个datepicker示例?什么是我可能添加的任何未来元素的良好解决方案?

1 个答案:

答案 0 :(得分:4)

您可以使用relatedTarget事件的属性来过滤处理程序:

.mouseleave(function(e){
    if($(e.relatedTarget).closest('.ui-datepicker').length) return;
    $("#status").html("Status: Mouse is OUTSIDE");
});

--DEMO--