0
我正在为使用jQuery的触摸设备创建下拉导航栏。当点击菜单项标题和点击导航外部时,我可以隐藏下拉菜单,但是,当点击另一个下拉菜单项目标题时,我无法隐藏下拉菜单。两者都保持打开状态,直到我在导航栏外单击或再次单击菜单项标题。jQuery触摸设备下拉导航。单击另一个菜单项时无法隐藏菜单项
这里的脚本:
<script type="text/javascript">
$(document).ready(function(){
$(".toggle_container").addClass("hidden");
$("li#more").click(function(){
if ($(this).children("ul.toggle_container").hasClass("hidden"))
$("ul.toggle_container").toggleClass("hidden");
else{
$("ul.toggle_container").toggleClass("hidden");
}
return false;
})
$("li#search").click(function(){
if ($(this).children("div.toggle_container").hasClass("hidden"))
$("div.toggle_container").toggleClass("hidden");
else{
$("div.toggle_container").toggleClass("hidden");
}
return false;
});
$("li.trigger").click(function(){
$(this).toggleClass("clicked");
});
$(".toggle_container").click(function(e) {
e.stopPropagation();
});
$(document).click(function() {
$(".toggle_container").addClass("hidden");
$("li.trigger").removeClass("clicked");
});
});
</script>
而这里的标记:
<nav id="navbar">
<ul>
<li id="home"><a href="/mobile/index.html"> </a></li>
<li><a href="#">Item 1</a></li>
<li id="more" class="trigger"><a href="#">More</a>
<ul class="toggle_container">
<li><a href="#">subitem1</a></li>
<li><a href="#">subitem2</a></li>
<li><a href="#">subitem3</a></li>
<li><a href="#">subitem4</a></li>
<li><a href="#">subitem5</a></li>
<li><a href="#">subitem6</a></li>
</ul>
</li>
<li id="search" class="trigger"><a href="#"> </a>
<div id="nav-search-box" class="toggle_container">
<div class="search_box">
<form class="search_form" name=gs action="http://www.google.com">
<input id=q maxlength=256 title="Enter search query" alt=Query name=q>
<input type=hidden name=btnG id=gs value=Search class=bt>
<input type=hidden name=btnG.x value=0>
<input type=hidden name=btnG.y value=0>
<input type=hidden name=oe value=UTF-8>
<input type=hidden name=ie value=UTF-8>
<input type=hidden name=entqr value=3>
<input type=hidden name=ud value=1>
<input type=hidden name=sort value=date:D:L:d1>
<input type=hidden name=output value=xml_no_dtd>
<input type=hidden name=lr value=lang_en>
<input type=hidden name=client value=google>
<input type=hidden name=proxystylesheet value=google>
<input type=hidden name=x value=0>
<input type=hidden name=y value=0>
<input type=hidden name=proxyreload value=1>
<input type=hidden name=entsp value=0>
<input type=hidden name=site value=google>
</form>
</div>
</div>
</li>
</ul>
</nav>
我也开到如何改善脚本的任何建议。感谢您的期待。
@Inrbob感谢您的建议。我其实只是找到了你的答案给另一个用户的问题,这是类似于我的[链接](http://stackoverflow.com/questions/4689852/multilevel-menu-navigation-based-on-click-and-not-hover) 。这是我正在处理的页面[链接](http://dl.dropbox.com/u/1343706/click-outside.html)。当我尝试你的建议时,它删除了单击的类,它仅用于样式。我认为我真正需要做的是在选择兄弟姐妹时将.hidden添加到兄弟姐妹,但我还没有想到如何去做。再次感谢您看这篇文章... – user981023
很酷,希望有所帮助。我在这里嘲笑了我想要得到的答案:http://jsfiddle.net/EjFxH/。做了一些改变,希望这可以为你工作或帮助你一点点。请注意,我刚刚在你的末尾添加了一些CSS,而不是按块编辑块 – lnrbob
非常感谢Inrbob!这很完美,比以前更简单,更清洁。我特别喜欢“不(this).removeClass”。这将在稍后派上用场。再次感谢! – user981023