Javascript JS下拉菜单未关闭?

Javascript JS下拉菜单未关闭?,javascript,html,menu,Javascript,Html,Menu,所以我在这里找到了这把小提琴: 我想我会用它来进行个人教育。 我对JS真的很陌生,我注意到打开的父对象不会像打开时那样单击返回。这怎么能解决呢 $(document).ready(function () { $("li").click(function () { $('li > ul').hide(); $(this).children("ul").toggle(); }); }); 检查这把小提琴这把怎么样: $("li").click(

所以我在这里找到了这把小提琴: 我想我会用它来进行个人教育。 我对JS真的很陌生,我注意到打开的父对象不会像打开时那样单击返回。这怎么能解决呢

$(document).ready(function () {
    $("li").click(function () {
        $('li > ul').hide();
        $(this).children("ul").toggle();
    });
});
检查这把小提琴

这把怎么样:

$("li").click(function () {
    $('li > ul').hide();
    $(this).children("ul").toggle();
});

$(document).click(function()
{
    $('li > ul:visible').hide();
})

$('.menu li').click(function(e)
{
    e.stopPropagation();          
})
因此,在默认情况下,每当在文档中的任何位置单击时,您的可见菜单都将被隐藏。但是,当您打开一个新菜单时,您不希望发生这种情况(将显示并直接隐藏)。所以我做了一个例外,当你想打开一个新的菜单,我会取消文档点击事件时,它会被捕获。
我用来取消一个事件


也许是这个?只需稍微更改一下样式:P几乎完美,但我无法关闭菜单:/n你能让它像单击其他任何位置一样关闭吗?我在上面:P,当它工作时,我将把它作为一个窗口。检查这个。好的!谢谢你,这已经解决了:)现在它可以在“悬停”上随机工作,并且在浏览下一个菜单时保持菜单打开。对不起,我错误地在mouseleave中使用了toggle()。应该是hide()。谢谢,这个有用!但是现在我如何添加css转换呢?在悬停时,我只需要做#div{height:10px;transition:height 1s;}#div:hover{height:100px;}对吗?还是不?无论如何,我不知道如何将css添加到javascript中:/嗯,这是一个完全不同的主题。很难将jquery和css一起使用,因为css中没有任何onClick函数。当菜单列表可见时,必须添加一个新类。但我认为这会变得太“开箱即用”,我建议先尝试一些简单的东西。如果有一个菜单突然弹出,这看起来很愚蠢,因为页面上的其他任何东西都可以通过过渡平滑地设置动画。也许我会制作一个悬停菜单,或者用JS可以制作它的动画?我知道我的图片幻灯片就是这样的。你可以使用类来阻止jquery的点击。我在你的JSFIDLE上做的一个原型。它还没有完全实现功能,但通过这种方式,您可以使用jquery单击和css转换。
$("li").click(function () {
    $('li > ul').hide();
    $(this).children("ul").toggle();
});

$(document).click(function()
{
    $('li > ul:visible').hide();
})

$('.menu li').click(function(e)
{
    e.stopPropagation();          
})