jquery - 兄弟问题 - 当打开 1 个面板时关闭所有打开的面板

标签 jquery

如果我有这个 html:

<div class="main cat_info">
<h2>Question 1?</h2>
  <div class="answer">
    <p>bla bla bla</p>
  </div>
  <h2>question 2</h2>
  <div class="answer">
    <p>bla bla bla</p>
  </div>
  <h2>Question 3?</h2>
  <div class="answer">
    <p>bla bla bla</p>
  </div>
</div>

我打开一个问题,如果打开另一个问题,它就会关闭(这就是我想要的)。但是当我将 h2 和 .answer 包装在 div 中时,它不起作用。喜欢:

<div class="main cat_info">
  <div class="holder">
<h2>Question 1?</h2>
  <div class="answer">
    <p>bla bla bla</p>
  </div>
</div>
<div class="holder">
  <h2>question 2</h2>
  <div class="answer">
    <p>bla bla bla</p>
  </div>
</div>
  <div class="holder">
  <h2>Question 3?</h2>
  <div class="answer">
    <p>bla bla bla</p>
  </div>
</div>
</div>

这是 jquery:

$(document).ready(function() {
$('.answer').hide();
$('.cat_info h2').on('click', function() {
    var state = $(this).next('.answer').is('.open');
    if (state) {
        $(this).removeClass('active').next('.answer').removeClass('open').fadeOut();
    }else{
        $(this).addClass('active').next('.answer').addClass('open').slideDown()
               .siblings('.answer').removeClass('open').slideUp().end()
               .siblings('h2').not(this).removeClass('active');
    }
    });
});

我猜这是 sibling 的问题。帮忙?

最佳答案

有了这个标记,它可能看起来像:

$(document).ready(function() {
    $('.answer').hide();
    $('.cat_info h2').on('click', function() {
        var state = $(this).is('.active');
        if (state) {
            $(this).removeClass('active').next('.answer').fadeOut();
        } else {
            $(this).addClass('active').next('.answer').slideDown()
                   .closest('.holder').siblings('.holder').find('.answer').slideUp().end()
                   .find('h2').not(this).removeClass('active');
        }
    });
});​

FIDDLE

关于jquery - 兄弟问题 - 当打开 1 个面板时关闭所有打开的面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14060333/

相关文章:

javascript - jquery.selectbox-0.2 问题与 ie7 - 下拉出现在元素后面而不是前面

jquery - 使用 Bootstrap 验证器进行远程调用

javascript - 隔离自定义下拉菜单

javascript - 如何使用 iframe 取消文件上传

javascript - 使用 Javascript/Jquery 进行捏合和缩放,无需插件

javascript - 使用 jQuery 从 URL 获取一部分

Jquery-UI 选项卡不工作

javascript - jQuery/Javascript - 自行运行脚本函数

javascript - 当使用 Javascript/JQuery 选中该行中的复选框时,从 HTML 表中的特定列获取数据

javascript - 在 Javascript 或 JQuery 上,运行添加/删除 mousemove 事件时