Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery关闭/打开多个切换_Jquery - Fatal编程技术网

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(){…此处回答代码…})所以它会在元素准备好后运行。现在这是有意义的,不是吗:)完全被忽略了,盯着页面太久了。再次感谢!