2017-05-25 124 views
0

因此,我目前正在研究一个下拉列表菜单,正如您可能怀疑的那样...我很新手。 我希望这样做,当我打开下拉菜单时,以便当我悬停或单击它外面时,dropmenu应该再次隐藏。 怎样才能做到这一点?我已经在Stackoverflow上尝试了一些技巧,但是没有一个可以为我工作。关闭点击外部/悬停在外面的下拉菜单

正如你可以看到下面,它是我叫(ID)下拉菜单中的onclick="toggle_visibility"“droppy”它有一个默认的display:none;所以当我点击<a>标签它打开“droppy” /下拉菜单。但是如果在外部悬停或者只是单击外部时它会再次关闭。这两种解决方案对我来说都是好的=)如果有人知道,请帮助。谢谢!

function toggle_visibility(id) { 
 
    var e = document.getElementById(id); 
 
    if(e.style.display == 'block') 
 
     e.style.display = 'none'; 
 
    else 
 
     e.style.display = 'block'; 
 
    }
#nav #droppy{ 
 
\t position:relative; 
 
\t left:90px; 
 
\t top: 17px; 
 
\t width: 225px; 
 
\t height: 150px; 
 
\t display:none; 
 
\t font-size: 25px; 
 
\t background-color: #304749; 
 
\t border-bottom: 1.6px solid black; 
 
}
<div id="nav"> 
 
    <div id="fall"> 
 
    <a href="#" ="javascript:void(0)" onclick="toggle_visibility('droppy');">Menu</a> 
 
    </div> 
 
    <div id="droppy"> 
 
    <a href="airplanes">Våra Flygplan</a> 
 
    </div> 
 
</div>

+0

哪里是你的'toggle_visibility'功能码? –

+0

嗨Jen R!对不起,我错过了那一个。我已经把它列入了我现在的问题。 – Xuzkie

回答

0

见下面的代码。添加了单击事件以打开菜单和鼠标事件以隐藏。

$('#fall a').mouseout(function() { 
 
    $('#droppy').hide(); 
 
}).click(function(){ 
 
$('#droppy').show(); 
 
});
#nav #droppy{ 
 
\t position:relative; 
 
\t left:90px; 
 
\t top: 17px; 
 
\t width: 225px; 
 
\t height: 150px; 
 
\t display:none; 
 
\t font-size: 25px; 
 
\t background-color: #304749; 
 
\t border-bottom: 1.6px solid black;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="nav"> 
 
    <div id="fall"> 
 
    <a href="#" ="javascript:void(0)">Menu</a> 
 
    </div> 
 
    <div id="droppy"> 
 
    <a href="airplanes">Våra Flygplan</a> 
 
    </div> 
 
</div>

+0

你好,我看到它是如何工作在“运行代码片段”,但它不适用于我的网站。另外,当我离开我想让它在离开droppy-window时隐藏,而不是打开它的元素时,它隐藏了droppy。 – Xuzkie

0

看到这个代码,我使用了悬停事件

/* 
 
$("#menu").hover(
 
    function() { 
 
    $("#droppy").show(); 
 
    }, function() { 
 
    $("#droppy").hide(); 
 
    } 
 
); 
 
*/ 
 
$("#menu").on("click",function(){ 
 
    $("#droppy").show(); 
 
}); 
 

 
$("#droppy").hover(
 
    function() { 
 
    
 
    }, function() { 
 
    $("#droppy").hide(); 
 
    } 
 
);
#nav #droppy{ 
 
\t position:relative; 
 
\t left:90px; 
 
\t top: 17px; 
 
\t width: 225px; 
 
\t height: 150px; 
 
\t display:none; 
 
\t font-size: 25px; 
 
\t background-color: #304749; 
 
\t border-bottom: 1.6px solid black;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="nav"> 
 
    <div id="fall"> 
 
    <a href="#" ="javascript:void(0)" id="menu">Menu</a> 
 
    </div> 
 
    <div id="droppy"> 
 
    <a href="airplanes">Våra Flygplan</a> 
 
    </div> 
 
</div>

+0

你好,我看到它是如何在“运行代码片段”下工作的,但它不适用于我的网站。另外,当我离开我想让它在离开droppy-window时隐藏,而不是打开它的元素时,它隐藏了droppy。 当我改变你的建议,当我点击应该打开我的droppy时,什么都不会发生。嗯... – Xuzkie

+0

@Xuzkie我已经更新了代码。检查它是否按照您的需求工作。 – Lalit

+0

感谢您试图帮助拉利特,但可悲的是,它仍然无法正常工作。当我点击应该打开我的菜单的时没有任何反应。 – Xuzkie