【问题标题】:jQuery mouseleave fires when first item from autocomplete is selected选择自动完成的第一项时,jQuery Mouseleave会发射
【发布时间】:2015-02-19 20:44:17
【问题描述】:

这里已经有一个类似的问题,但解决方案并没有帮助我。 to the question

我有一个 li,里面是一个 div。在那个 div 里面是一个登录表单。

如果我将鼠标悬停在 li 上,则 div 会通过 jQuery 出现。

现在 - 如果我从浏览器自动完成中选择第一个建议,则会触发 mouseleave 并且 div 消失。但它只是在第一个建议。如果我从中选择第二个或第三个建议,则只要所选建议在 div 之内/之上(很明显),div 就会保留并且一切正常。

jQuery: 1.10.2 在 Chrome 中测试 40.0.2214.111 m

$(document).on("mouseenter", "li.menu-item", function() {
    $(this).addClass("hover");
}).on("mouseleave",  "li.menu-item", function() {
    $(this).removeClass("hover");
});
li{
    padding-left: 0;
    float:left;
    width:100px;
    list-style: none;
}

ul li.menu-item .login-layer{
    display:none;
    width:100px;
    height:100px;
    border:1px solid #000;
}

ul li.menu-item.hover .login-layer{
    display:block;
}

input{
    width:100px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<ul>
    <li class="menu-item">
        <p>login</p>        
        <div class="login-layer">
            <form>
                <input type="text" placeholder="E-Mail" id="email" name="login" class="EMAIL"/><br/>
            </form>
        </div>
    </li>
</ul>

http://jsfiddle.net/adzrn7tt/

【问题讨论】:

  • 当我选择第一个选项时似乎工作正常

标签: javascript jquery autocomplete


【解决方案1】:

如果您的输入是焦点,则添加一个条件:

if(!$('input').is(':focus')) {
    $(this).removeClass("hover");
}

【讨论】:

  • 谢谢 - 我试过了,不幸的是它并没有改变任何东西。第一次选择后,Div 仍然消失。
  • 我只是 fork 你的代码来尝试解决方案:jsfiddle.net/Pik_at/adzrn7tt/1
猜你喜欢
  • 2017-08-06
  • 2011-12-23
  • 2014-01-07
  • 1970-01-01
  • 2011-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-05
相关资源
最近更新 更多