javascript - jQuery 单击打开一个下拉菜单

标签 javascript jquery html

在一个网站中,我有几个“下拉菜单”,当您按加号时,它们就会变得可见。我用 jQuery 做到了这一点(参见下面的代码),但是当按下按钮时,每个 dorpdown 都会打开。我怎样才能只打开按下按钮的下拉菜单(无需为每个按钮重新编写此代码)?

 $('main .menu').click(function() {

      if($(this).hasClass('open')) {
            $(this).removeClass('open');
           $('main .menu').html('+');
           $('main .info').slideUp();

       }
       else {
            $(this).addClass('open');
            $('main .menu').html('-');
            $('main .info').slideDown();

       } 

 });

html:

<div id="first">
          <img src="images/flexit.jpg" alt="">
          <h2>Flexit</h2>
          <a href="#" class="menu">&#43;</a>
          <div class="info">
               <table>
                    <tr>
                         <td>Name:</td>
                         <td>Flexit</td>
                    </tr>
                    <tr>
                         <td>Dimensions:</td>
                         <td>2000 x 1600 x 1900 mm</td>
                    </tr>
                    <tr>
                         <td>Material(s):</td>
                         <td>powdercoated steal, redwood</td>
                    </tr>
                    <tr>
                         <td>Weight:</td>
                         <td>43 kg</td>
                    </tr>
                    <tr>
                         <td>Current location:</td>
                         <td>Buzzkruit exhibition, Designcenter Winkelhaak Antwerp</td>
                    </tr>

               </table>          
          </div>

最佳答案

您需要在菜单前保留加号:

<a href="#" class="menu-trigger">+</a>
<ul class="menu">
  <!-- Menu -->
</ul>
<a href="#" class="menu-trigger">+</a>
<ul class="menu">
  <!-- Menu -->
</ul>

在 jQuery 中,你只需要给加号,你也可以把加号变成减号:

$(".menu-trigger").click(function () {
  $(this).next(".menu").toggleClass("open"); // Selects only the next one!
});

查看此处的代码片段:

$(function () {
  $(".menu-trigger").click(function () {
    $(this).next(".menu").toggleClass("open"); // Selects only the next one!
    $(this).html($(this).next(".menu").hasClass("open") ? '-' : '+');
    return false;
  });
});
.menu-trigger {display: block; width: 3em; text-decoration: none;}
.menu {display: none;}
.menu.open {display: block;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<a href="#" class="menu-trigger">+</a>
<ul class="menu">
  <li>Menu 1</li>
  <li>Menu 1</li>
  <li>Menu 1</li>
</ul>
<a href="#" class="menu-trigger">+</a>
<ul class="menu">
  <li>Menu 2</li>
  <li>Menu 2</li>
  <li>Menu 2</li>
</ul>

关于javascript - jQuery 单击打开一个下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30978852/

相关文章:

javascript - Koa 与 Kafka - 无法产生 kafka.connect()

javascript - 在 JavaScript 中验证 JSON 文件

jquery - 我以前从未见过的 jquery Bind 方法的用法

javascript - 如何在从 json 数据创建 html 表时创建隐藏的 <td> 行?

javascript - 如何在 react 中使用 howler.js?

javascript - 安装失败 'cordova-plugin-whitelist' :Error: cmd: Command failed with exit code 1

c# - 当用户在文本框中输入数字时动态显示 div

javascript - 使用javascript获取html页面的内容

javascript - 防止删除 Javascript 中的最后一个 div

html - 为什么这个 css 选择器 for::selection 不起作用?