Jquery关闭/打开多个切换
我的菜单中的切换成功地为我在其中的两个链接工作。因为一次切换的顶部链接覆盖了另一个链接,所以没有问题。但是由于它下面的链接使顶部链接暴露出来,用户可以单击它,现在打开两个切换项目,并且几乎彼此堆叠在一起。有没有办法让我检查另一个切换项是否打开,如果打开,请关闭它?谢谢Jquery关闭/打开多个切换,jquery,Jquery,我的菜单中的切换成功地为我在其中的两个链接工作。因为一次切换的顶部链接覆盖了另一个链接,所以没有问题。但是由于它下面的链接使顶部链接暴露出来,用户可以单击它,现在打开两个切换项目,并且几乎彼此堆叠在一起。有没有办法让我检查另一个切换项是否打开,如果打开,请关闭它?谢谢 <div class="parents-toggle"> <a href="#" id="customize-toggle">Customize</a><br/> <div
<div class="parents-toggle">
<a href="#" id="customize-toggle">Customize</a><br/>
<div class="menu-toggle hidden" id="customize-menu">
<div class="menu-toggle-one">
<h3>Background</h3>
<ul>
<li><a href="#">Dark Wood</a></li>
<li><a href="#">Wallpaper</a></li>
<li><a href="#">Bricks</a></li>
<li><a href="#">Planks</a></li>
<li><a href="#">Default</a></li>
</ul>
</div>
<div class="menu-toggle-two">
<h3>Layout</h3>
<ul>
<li><a href="#">Grid</a></li>
<li><a href="#">List</a></li>
<li><a href="#">Full</a></li>
</ul>
</div>
</div>
</div>
<a href="/submit/">Submit video</a><br/>
<div class="parents-toggle">
<a href="#" id="channels-toggle">Channels</a>
<div class="menu-toggle hidden" id="channels-menu">
<div class="menu-toggle-one">
<ul>
<li><a href="#">Automotive</a></li>
<li><a href="#">Comedy</a></li>
<li><a href="#">Movies</a></li>
<li><a href="#">Weather</a></li>
</ul>
</div>
<div class="menu-toggle-two">
<ul>
<li><a href="#">Business</a></li>
<li><a href="#">Commercials</a></li>
<li><a href="#">Music</a></li>
<li><a href="#">Technology</a></li>
</ul>
</div>
</div>
</div>
</div>
<script>
$("#customize-toggle").click(function () {
$("#customize-menu").toggle();
});
$("#channels-toggle").click(function () {
$("#channels-menu").toggle();
});
</script>
背景
布局
$(“#自定义切换”)。单击(函数(){
$(“#自定义菜单”).toggle();
});
$(“#频道切换”)。单击(函数(){
$(“#频道菜单”).toggle();
});
我在我的站点上做的是在body元素中添加一个事件处理程序,我使用它作为一个“全包”,检查菜单是否打开,然后关闭它。我在我的站点上做的是在body元素中添加一个事件处理程序,我使用它作为一个“全包”,检查菜单是否打开,然后检查它是否打开,关闭它。您可以稍微调整jQuery,因为在所有切换菜单上都有一个菜单切换
类,只需在单击处理程序中隐藏不需要的ID,如下所示:
$("#customize-toggle").click(function () {
$(".menu-toggle:not(#customize-menu)").hide();
$("#customize-menu").toggle();
});
$("#channels-toggle").click(function () {
$(".menu-toggle:not(#channels-menu)").hide();
$("#channels-menu").toggle();
});
$(".parents-toggle > a").click(function () {
$("div.menu-toggle").not($(this).siblings()).hide();
$(this).siblings(".menu-toggle").toggle();
});
$(".parents-toggle > a").click(function () {
$("div.menu-toggle").not($(this).siblings()).slideUp();
$(this).siblings(".menu-toggle").slideToggle();
});
此外,如果您愿意,因为您的菜单具有一致的布局,您可以使用一次单击处理程序查找相对于链接的toggle div,无需匹配ID,如下所示:
$("#customize-toggle").click(function () {
$(".menu-toggle:not(#customize-menu)").hide();
$("#customize-menu").toggle();
});
$("#channels-toggle").click(function () {
$(".menu-toggle:not(#channels-menu)").hide();
$("#channels-menu").toggle();
});
$(".parents-toggle > a").click(function () {
$("div.menu-toggle").not($(this).siblings()).hide();
$(this).siblings(".menu-toggle").toggle();
});
$(".parents-toggle > a").click(function () {
$("div.menu-toggle").not($(this).siblings()).slideUp();
$(this).siblings(".menu-toggle").slideToggle();
});
最后,如果您想要一点动画效果,可以使用和轻松添加,如下所示:
$("#customize-toggle").click(function () {
$(".menu-toggle:not(#customize-menu)").hide();
$("#customize-menu").toggle();
});
$("#channels-toggle").click(function () {
$(".menu-toggle:not(#channels-menu)").hide();
$("#channels-menu").toggle();
});
$(".parents-toggle > a").click(function () {
$("div.menu-toggle").not($(this).siblings()).hide();
$(this).siblings(".menu-toggle").toggle();
});
$(".parents-toggle > a").click(function () {
$("div.menu-toggle").not($(this).siblings()).slideUp();
$(this).siblings(".menu-toggle").slideToggle();
});
您可以稍微调整jQuery,因为在所有切换菜单上都有一个
菜单切换
类,只需在单击处理程序中隐藏不需要的ID,如下所示:
$("#customize-toggle").click(function () {
$(".menu-toggle:not(#customize-menu)").hide();
$("#customize-menu").toggle();
});
$("#channels-toggle").click(function () {
$(".menu-toggle:not(#channels-menu)").hide();
$("#channels-menu").toggle();
});
$(".parents-toggle > a").click(function () {
$("div.menu-toggle").not($(this).siblings()).hide();
$(this).siblings(".menu-toggle").toggle();
});
$(".parents-toggle > a").click(function () {
$("div.menu-toggle").not($(this).siblings()).slideUp();
$(this).siblings(".menu-toggle").slideToggle();
});
此外,如果您愿意,因为您的菜单具有一致的布局,您可以使用一次单击处理程序查找相对于链接的toggle div,无需匹配ID,如下所示:
$("#customize-toggle").click(function () {
$(".menu-toggle:not(#customize-menu)").hide();
$("#customize-menu").toggle();
});
$("#channels-toggle").click(function () {
$(".menu-toggle:not(#channels-menu)").hide();
$("#channels-menu").toggle();
});
$(".parents-toggle > a").click(function () {
$("div.menu-toggle").not($(this).siblings()).hide();
$(this).siblings(".menu-toggle").toggle();
});
$(".parents-toggle > a").click(function () {
$("div.menu-toggle").not($(this).siblings()).slideUp();
$(this).siblings(".menu-toggle").slideToggle();
});
最后,如果您想要一点动画效果,可以使用和轻松添加,如下所示:
$("#customize-toggle").click(function () {
$(".menu-toggle:not(#customize-menu)").hide();
$("#customize-menu").toggle();
});
$("#channels-toggle").click(function () {
$(".menu-toggle:not(#channels-menu)").hide();
$("#channels-menu").toggle();
});
$(".parents-toggle > a").click(function () {
$("div.menu-toggle").not($(this).siblings()).hide();
$(this).siblings(".menu-toggle").toggle();
});
$(".parents-toggle > a").click(function () {
$("div.menu-toggle").not($(this).siblings()).slideUp();
$(this).siblings(".menu-toggle").slideToggle();
});
这太棒了!谢谢你的帮助。尼克,有什么原因可以解释为什么这在FF中运行得很好,但是在Chrome和Safari中,活动没有启动,菜单也没有打开。当我看到你的演示时,它们在所有浏览器中都工作得很好,但我没有在其中添加任何不同的内容。有什么想法吗?谢谢@Pedro-确保您的代码被包装在
文档中。ready
,如下所示:$(function(){…此处回答代码…})代码>所以它会在元素准备好后运行。现在这是有意义的,不是吗:)完全被忽略了,盯着页面太久了。再次感谢!这太棒了!谢谢你的帮助。尼克,有什么原因可以解释为什么这在FF中运行得很好,但是在Chrome和Safari中,活动没有启动,菜单也没有打开。当我看到你的演示时,它们在所有浏览器中都工作得很好,但我没有在其中添加任何不同的内容。有什么想法吗?谢谢@Pedro-确保您的代码被包装在文档中。ready
,如下所示:$(function(){…此处回答代码…})代码>所以它会在元素准备好后运行。现在这是有意义的,不是吗:)完全被忽略了,盯着页面太久了。再次感谢!