如何仅切换* next *&隐藏其他课程

时间:2014-02-20 05:28:13

标签: javascript jquery

我在可折叠的jquery中遇到了一些问题。

我的HTML元素就像这样

    <div id="first" class="collapse-container">

        <h1 class="collapse">
        <span class="arrow-r"></span>First Heading</h1>
        <div class="accordion-active">
            <p>First Section</p>
            <p>First Section</p><p>First Section</p>
        </div>
        <h1 class="collapse"><span class="arrow-r"></span>Second Heading</h1>
        <div class="accordion-active">
            <p>Second Section</p>
            <p>Second Section</p>
        </div>
        <h1 class="collapse"><span class="arrow-r"></span>Third Heading</h1>
        <div class="accordion-active">
            <p>Third Section</p>
            <p>Second Section</p>
        </div>
    </div>

我正在使用此jquery来切换类

    $(document).ready(function () {
        $(".collapse").click(function () {
            $(this).toggleClass("active");
        });
    });

    jQuery(document).ready(function() {
      jQuery(".accordion-active").hide();
      //toggle the componenet with class msg_body
      jQuery(".collapse").click(function()
      {
        jQuery(this).next(".accordion-active").slideToggle(0);

      });
    });

现在我的问题是,当我点击第一个h1标签时,它只显示其elements.thats罚款。 但现在,当我点击第二个h1标签时,它会显示其元素,但是第一个H1标签仍处于打开状态。

如果一个(下一个课程)处于活动状态,我怎样才能将所有其他人隐藏起来?

由于

2 个答案:

答案 0 :(得分:0)

试试这个。

$(".accordion-active").hide();

//toggle the componenet with class msg_body
$(".collapse").click(function(){

  var $this = $(this); //  Cacheing $(this)

  $('.accordion-active').slideUp();

  if( !$this.next(".accordion-active").is('.open') ){
    //$('h1').removeClass('active');
    $('.accordion-active').removeClass('open');
    $this.addClass("active").siblings("h1").removeClass("active");
    $this.next(".accordion-active").addClass('open').slideDown();
  } else {
    $("h1").removeClass("active");
    $this.next(".accordion-active").removeClass('open').slideUp(); 
  }

});

Fiddle Demo

答案 1 :(得分:0)

或者您可以使用Accordion - jQuery UI