【问题标题】:Mouseover on element - do something / Mouseout on parent (or other) element - undo something?鼠标悬停在元素上 - 在父(或其他)元素上做某事/鼠标悬停 - 撤消某事?
【发布时间】:2014-02-11 02:32:31
【问题描述】:

我确定我在这里遗漏了一些明显的东西...... 我在菜单周围放置了一个包装器,当其中一个菜单项悬停时要下拉,我还希望它仅在鼠标离开下拉区域之前保持打开状态,而不是在它离开菜单项时保持打开状态。

查询:

var hov = 1;
$( "#link-a" ).mouseover(function(){
    clearTimeout();
    hov = 1;
    $( "#dropdown" ).addClass( "active" );
});

$( "#dropdown" ).mouseout(function(){
    hov = 0;
    setTimeout(function(){
        if(hov == 0){
            $( this ).removeClass( "active" );
        }
    }, 300);
}); 

HTML:

<div id="dropdown">
    <ul>
        <li id="link-a">Link A</li>
        <li id="link-b">Link B</li>
        <li id="link-c">Link C</li>
    </ul>            
</div>

CSS:

#dropdown {
    height: 0;
}
#dropdown.active {
    height: 600px;
}

【问题讨论】:

标签: jquery css


【解决方案1】:

我认为您真正在寻找的是mouseleave 事件而不是mouseout

jQuery(function () {
    $("#link-a").mouseover(function () {
        $("#dropdown").addClass("active");
    });

    $("#dropdown").mouseleave(function () {
        $(this).removeClass("active");
    });
})

演示:Fiddle

【讨论】:

  • 谢谢。这似乎是唯一适合我的解决方案。
【解决方案2】:
var hov = 1;
var timer; //declare variable named timer accessible to both function below
$("#link-a").mouseover(function(){
// ^ missing # for id-selector
    clearTimeout(timer); //clear timer
    hov = 1;
    $( "#dropdown" ).addClass( "active" );
});

$("#dropdown").mouseout(function(){
    hov = 0;
    timer = setTimeout(function(){ //assign setTimeout to variable timer
        if(hov == 0){
            $( this ).removeClass( "active" );
        }
    }, 300);
});


如果您想将鼠标悬停在#dropdown 内的所有 li 标签上
$("#dropdown li").mouseover(function(){
    clearTimeout(timer); //clear timer
    hov = 1;
    $("#dropdown").addClass( "active" );
});

【讨论】:

  • 我不知道为什么,但我就是无法让它正常工作。当我鼠标悬停时,下拉菜单会保持打开状态,我不知道为什么。不过谢谢。
【解决方案3】:

确实很简单。您缺少 # 以在 $( "link-a" ) 处指示“ID 为.. 的元素”

$( "#link-a" ).mouseover(function(){
    clearTimeout();
    hov = 1;
    $( "#dropdown" ).addClass( "active" );
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 2013-07-02
    • 1970-01-01
    • 2020-01-03
    • 2013-02-22
    • 1970-01-01
    相关资源
    最近更新 更多