mouseOver()有趣的行为

时间:2012-01-20 20:23:51

标签: javascript jquery

我非常好奇为什么当我将鼠标从标题上移开时蓝色<div>消失了,而不是当鼠标离开整个 {{1 }}

<div>

Here's a demo jsFiddle.

3 个答案:

答案 0 :(得分:2)

原因是因为mouseout事件冒泡,也就是说,当您将鼠标移出任何一个孩子时,祖先仍然会收到该事件。您可以通过针对当前目标(this)检查目标来解决此问题。 Here's an updated jsFiddle.

$("#yw1").mouseout(function(e) {
    if(e.target === this) {
        $("#yw1 .portlet-content").slideUp('fast');
    }
});

答案 1 :(得分:2)

使用jQuery的mouseleave而不是mouseout。

答案 2 :(得分:2)

原因是mouseout事件被冒泡并且隐藏了。使用mousenetermouseleave事件来解决此问题。

$("#yw1 .portlet-title").mouseenter(function(){
    $("#yw1 .portlet-content").slideDown('fast');
});


$("#yw1").mouseleave(function(){
    $("#yw1 .portlet-content").slideUp('fast');
});

<强> Demo