我的菜单项不会重定向到其他页面,因此点击后它们不会隐藏。我可以使用javascript或jquery隐藏它们,但它们永远隐藏起来。我已经尝试了每一个建议,但它们都不适合我。这是我的HTML:
<nav>
<ul>
<li class="windows"><a href="#">Windows</a>
<ul>
<li><a href="#" class="tile">Tile</a></li>
<li><a href="#" class="closeAll">Close all</a></li>
</ul>
</li>
</ul>
</nav>
我的css:
nav ul ul {
display: none;
position: absolute;
top: 100%;
z-index: 1003;
}
nav ul li:hover > ul {
display: block;
height: auto;
}
和我的javascript for tile:
tileObject = $('a.tile');
tileObject.click(function () {
$('.windows ul').hide();
tileAction();
});
答案 0 :(得分:2)
如果您使用$('.windows ul').hide();
隐藏菜单,则需要执行$('.windows ul').show();
(或等效的东西)才能再次显示。
因为$('.windows ul')
将被隐藏。您需要将事件绑定到另一个元素,例如
$('li.windows').click(function(){
$('.windows ul').show()
});`
- 编辑 -
为此,您不需要javascript。检查fiddle。只需使用选择器:hover
即可。然后,如果您想使用JS执行某些操作,只需使用hover
事件。看看docs
- 编辑2 -
我现在明白了。检查this。您需要在隐藏元素之前取消绑定悬停事件。然后在隐藏元素后再次绑定它。
答案 1 :(得分:0)
你可以尝试这个:
$(document).ready(function(){
$("li a.tile").click(function(){
$("body").off("hover", "li.windows");
$("nav ul li ul").hide();
$("li.windows").hover(function(){
$("nav ul li ul").show();
});
});
});
答案 2 :(得分:-1)
如果你是隐藏和元素,那么你需要再次显示它。首先,你的css中有top:100%
,你不需要这个。