jquery - 下拉菜单 jquery 切换项目

标签 jquery html

我对 jQuery 下拉菜单有疑问。我的代码:

$('.item-active, .item').click(function() { 
    $(this).toggleClass('item-active');
    if($('h3').hasClass('item-active')) {
        $(this).siblings().css( 'display', 'block' );       
    }   

    $(this).toggleClass('item');    
    if($('h3').hasClass('item')) {
        $(this).siblings().css( 'display', 'none' );    
    }
});
<div>
    <h3 class="item-active">item 1</h3>
    <div class="item-desc">Lorem Lorem</div>
</div>
<div>
    <h3 class="item">item 2</h3>
    <div class="item-desc">Lorem Lorem</div>
</div>
<div>
    <h3 class="item">item 3</h3>
    <div class="item-desc">Lorem Lorem</div>
</div>

我所需要的只是在单击相关的 h3 时切换菜单。此外,同一时间只能激活一个项目(其余描述应隐藏)

最佳答案

要解决这个问题,您可以简单地使用 removeClass() 从所有元素中删除 .item-active 类,然后再将其切换到被点击的元素上。

另请注意,您可以通过使用 + 同级运算符将 JS 代码简化为仅修改类,而让 CSS 隐藏/显示 .item-desc。试试这个:

$('.item').click(function() {
  $('.item').not(this).removeClass('item-active');
  $(this).toggleClass('item-active');
});
.item-active {
  color: #C00;
}
.item-desc {
  display: none;
}
.item-active + .item-desc {
  display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <h3 class="item item-active">item 1</h3>
  <div class="item-desc">Lorem Lorem</div>
</div>
<div>
  <h3 class="item">item 2</h3>
  <div class="item-desc">Lorem Lorem</div>
</div>
<div>
  <h3 class="item">item 3</h3>
  <div class="item-desc">Lorem Lorem</div>
</div>

关于jquery - 下拉菜单 jquery 切换项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40972604/

相关文章:

php - 如何创建自定义 jquery 轮播?

javascript - 始终触发 <select> 的 "change"-事件,即使单击的 select2-option 已被选中

javascript - JQuery:调整窗口大小时事件处理程序停止工作

javascript - 在 IE 中将文本旋转 330 度

java - 在jsp中插入多个空格

javascript - 检查基于下拉问题的复选框

jQuery 点击函数改变正文溢出属性

javascript - 在下拉列表中单击复选框时,复选框保持选中状态

html - 分享按钮 - 悬停和 Googleplus/Facebook 链接

javascript - 在客户端/服务器通信中使用这两种不同的风格有什么优缺点吗?