JQuery mouseenter()和mouseleave()

时间:2013-04-01 13:50:53

标签: javascript jquery html mouseenter mouseleave

所以我有这个演示导航,侧面有一个小按钮,当你将鼠标悬停在按钮上时,它会将菜单滑入窗口。虽然我有悬停工作,但现在当鼠标离开时,它仍然是打开的。怎么解决这个问题? <顺便说一下,我对jQuery很新

这是html:

<div id="demoNav">
    <button class="open"></button>
    <ul>
        <li><a href="index.html">Home Pagina</a></li>
        <li><a href="product.html">Product Pagina</a></li>
        <li><a href="bestel.html">Bestel Pagina</a></li>
    </ul>
</div>

我的jQuery:

$("#demoNav").mouseenter(function(){
       $("#demoNav").animate({marginLeft:'0px'}, 500)
});

如果您需要更多信息,请告诉我,我会提供更多代码。

6 个答案:

答案 0 :(得分:1)

你实际上并没有告诉它再次隐藏。

那就是说,我想建议这个CSS替代方案:

#demoNav {
    transition:margin-left 0.5s ease;
    -webkit-transition:margin-left 0.5s ease;
}
#demoNav:hover {
    margin-left:0;
}

答案 1 :(得分:1)

试试这个:

$("#demoNav").hover(

function () {
    $(this).animate({
        marginLeft: '0px'
    }, 500)
},

function () {
    $(this).animate({
        marginLeft: '50px'
    }, 500)
});

答案 2 :(得分:0)

添加mouseleave事件 -

$('#demoNav').mouseleave(function(){
   $("#demoNav").animate({marginLeft:'50px'}, 500)
});

答案 3 :(得分:0)

使用jQuery:

$("#demoNav").hover(function(){
    // do something when mouse hover           
},function(){
    //do some thing when mouseout
});

答案 4 :(得分:0)

您为mouseenter编码,但忘记编写mouseleave event

代码

在jQuery中添加这些行

$("#demoNav").mouseleave(function(){
       $("#demoNav").animate({'marginLeft':'50px'}, 500)
});

这里的工作示例:

http://jsfiddle.net/EP6wR/

但我建议使用更清洁的悬停方法

syntax: $(selector).hover(handlerIn, handlerOut)

答案 5 :(得分:0)

可能是这个解决方案有效

 $('#demoNav .open').on("mouseenter", function(){  $(this).parent().animate({marginLeft:'0px'}, 500); });
 $('#demoNav').on("mouseleave", function(){  $(this).animate({marginLeft:'50px'}, 500); });

这会在按钮悬停时激活窗格,但是当你离开div时,它会再次动作左移