Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.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
Javascript 如何不同时切换所有菜单_Javascript_Jquery_Html_Css_Twitter Bootstrap - Fatal编程技术网

Javascript 如何不同时切换所有菜单

Javascript 如何不同时切换所有菜单,javascript,jquery,html,css,twitter-bootstrap,Javascript,Jquery,Html,Css,Twitter Bootstrap,我第一次和Boostrap合作,请不要杀了我:D 我的导航栏有问题。我有7个菜单,每个菜单都有自己的下拉菜单。问题是,当我点击一个菜单时,它们都会同时下拉,我只需要下拉我点击的菜单。我的JS代码相当初级。 这就是我目前使用的: $('.dropdown-toggle').click(function() { $('.dropdown-menu').toggle(); }); HTML代码如下(例如一个菜单;每个菜单都有类似的代码): 我需要更改什么,以便只单击下拉

我第一次和Boostrap合作,请不要杀了我:D 我的导航栏有问题。我有7个菜单,每个菜单都有自己的下拉菜单。问题是,当我点击一个菜单时,它们都会同时下拉,我只需要下拉我点击的菜单。我的JS代码相当初级。 这就是我目前使用的:

$('.dropdown-toggle').click(function() {
    $('.dropdown-menu').toggle();
  });
HTML代码如下(例如一个菜单;每个菜单都有类似的代码):

  • 我需要更改什么,以便只单击下拉菜单


    谢谢

    找到切换后的菜单:

    $('.dropdown-toggle').click(function() {
      $(this).next('.dropdown-menu').toggle();
    });
    

    示例:

    问题在于,您正在注册的处理程序将使用类
    下拉菜单选择任何内容,然后将其切换,因为您已经编写了:

    $('.dropdown-toggle').click(function() {
        $('.dropdown-menu').toggle();
      });
    
    正如您所说,您不想使用该类切换所有内容,您只想切换单击的内容,因此您应该使用参数from查找单击的内容,并选择Relevant下拉菜单进行切换:

    $('.dropdown-toggle').click(function(e) {
      $(e.target).next('.dropdown-menu').toggle();
    });
    

    如果您有多个菜单,我更喜欢使用:

    $(document).ready(function() {
        $('.dropdown-toggle').click(function() {
            $('.dropdown-menu').slideUp();
            $(this).next('dropdown-menu').slideDown();
        );
    });
    
    这样做的好处是,它将关闭任何其他打开的下拉菜单,然后打开已单击的菜单。
    可以进一步改进以检查所单击的.dropdown切换是否当前处于打开状态。

    我可以使用此HTML完成此操作

    <a href="#" class="dropdown-toggle" data-toggle="dd1">Dropdown 1<span class="caret"></span></a>
    <ul class="dropdown-menu dd1" role="menu">
        <li><a href="#">Item 1</a></li>
        <li><a href="#">Item 2</a></li>
    </ul>
    <a href="#" class="dropdown-toggle" data-toggle="dd2">Dropdown 2 <span class="caret"></span></a>
    <ul class="dropdown-menu dd2" role="menu">
        <li><a href="#">Item 1</a></li>
        <li><a href="#">Item 2</a></li>
    </ul>
    
    注:

    • 只是JS不适合我
    • 数据切换,bootstrap似乎使用它来根据类名确定要切换的

    • 将其与Paul Roub的答案结合使用,以覆盖默认行为

    您的选择器可能太通用了,您需要将其设置为在父容器的基础上工作,以便它知道您引用的是您单击的容器,而不是所有共享相同类名的容器。引导功能不为您处理切换吗<代码>$('.dropdown menu')
    选择该类的每个元素。p.s。并修复断开的关闭
    <a href="#" class="dropdown-toggle" data-toggle="dd1">Dropdown 1<span class="caret"></span></a>
    <ul class="dropdown-menu dd1" role="menu">
        <li><a href="#">Item 1</a></li>
        <li><a href="#">Item 2</a></li>
    </ul>
    <a href="#" class="dropdown-toggle" data-toggle="dd2">Dropdown 2 <span class="caret"></span></a>
    <ul class="dropdown-menu dd2" role="menu">
        <li><a href="#">Item 1</a></li>
        <li><a href="#">Item 2</a></li>
    </ul>
    
    $(".dropdown-toggle").click(function(e) {
        $(this).next('.dropdown-menu').toggle();
    });