javascript - 与 .click() 和 .hover() 结合切换的 jquery 问题

标签 javascript jquery html css hover

当我将 .click() 和 .hover() 与切换结合使用时遇到问题。

我有一个“菜单”,应该在悬停时打开/关闭,但也可以在单击时关闭/重新打开。但是,如果我用悬停打开菜单,然后单击关闭它,如果我停止悬停它,它会再次打开。

这是我的代码(jsfiddle)

HTML

<ul>
<li><span>Click Me</span>
    <ul>
        <li><a href="#">Option 1</a></li>
        <li><a href="#">Option 1</a></li>
        <li><a href="#">Option 1</a></li>
    </ul>
</li>
</ul>

JS

$(function() {
    $("ul").hover(function() {
        $(this).find('ul').toggle();
    });
    $("ul").click(function() {
       $(this).find('ul').toggle();
    });
});

CSS

ul{
    margin: 0;
    padding: 0;
    border: 1px solid black;
    position: relative;
}

li{
    list-style-type: none;
}

ul ul{
    display: none;
    position: absolute;
    width: 100%;
    left: -1px;
}

span{
    display: block;
    padding: 5px;
    background-color: #eeeeee;
}

a{
    background-color: #eee;
    display: block;
    padding: 5px;
}

a:hover{
    background-color: white;
}

我知道问题出在哪里,但我不知道如何解决。我希望有人有解决方案。

最佳答案

你必须为鼠标进出编写两个悬停函数,而不是像下面那样使用 toggle :

$(function() {
        $("ul").hover(function() {
            $(this).find('ul').show();
        },function() {
            $(this).find('ul').hide();
        });
        $("ul").click(function() {
           $(this).find('ul').toggle();
        });
    });

Demo

关于javascript - 与 .click() 和 .hover() 结合切换的 jquery 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25243914/

相关文章:

javascript - React 中的嵌套路由无法使用 React-router v4 正确渲染

JQUERY.MB.YTPLAYER 不工作

javascript - 根据数组中的数据按一定顺序从数组中输出数据

javascript - 在队列中制作 jQuery 动画

php - 我正在尝试使用用户元配置文件中的头像图像作为模板的背景

javascript - Javascript 的 Observables 核心部分

javascript - Android 版 Chrome 在重放录音时出现错误

javascript - 使用交互式帖子在 google+ 上发布图片

javascript - 修复如何在容器中查找和替换字符串的功能

javascript - 在 JavaScript 中使用基于用户输入的条件的问题