2013-10-05 37 views
0

關於下拉麪板的問題。我在這裏有一個jsfiddle http://jsfiddle.net/jmccommas/nJmNy/1/,我遇到的問題是我只想要一次打開一個面板的功能。因此,當用戶點擊不同的選項卡按鈕時,打開的面板將會關閉,同時打開新的面板。任何幫助,將不勝感激。jQuery下拉麪板 - 一次只打開一個面板?

這裏是JS:

$(function() { 

    $('#dropDown a').each(function() { 
     $('.panels').hide(); 
     var $this = $(this); 
     var panels = $this.attr('href'); 

     $this.click(function() { 
      $('.arrow').hide().fadeIn('slow'); 
      $('#dropDown a.active').removeClass('active'); 

      if ($('.panels').is(':visible')) { 
       $('.panels').slideUp('slow'); 


      } else { 
       $('.arrow').hide().fadeIn('slow'); 
       $(panels).slideDown('slow'); 
       $this.addClass('active').blur(); 

      }; // end else 


     }); // end click 

    }); // end each 

    $('.close-button a, .arrow a').click(function (evt) { // This is the close button 
     var panels = $('.panels'); 
     $(panels).slideUp(600); 
     evt.preventDefault(); 
    }); // end close button 


}); // end ready 

HTML:

<div id="demoPanels"> 
    <ul id="dropDown"> 
     <li><a href="#panel1">Button 1</a></li> 
     <li><a href="#panel2">Button 2</a></li> 
     <li><a href="#panel3">Button 3</a></li> 
     <li><a href="#panel4">Button 4</a></li> 
    </ul> 
    <div class="panelContainer"> 
    <div id="panel1" class="panels"> 
     <div class="arrow" align="center"><a href="#"><img src="arrow.jpg" alt=""></a></div> 
     <h2>panel 1</h2> 
     <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Assumenda, quo, maiores, quam praesentium obcaecati voluptate harum incidunt vel eius odio facilis atque impedit aperiam modi voluptas enim ipsa dolorem consequatur!</p> 
     <div class="close-button"> 
      <span><a href="#">X</a></span> 
     </div> 
    </div> 
    <div id="panel2" class="panels"> 
     <div class="arrow" align="center"><a href="#"><img src="arrow.jpg" alt=""></a> </div> 
     <h2>panel 2</h2> 
     <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Assumenda, quo, maiores, quam praesentium obcaecati voluptate harum incidunt vel eius odio facilis atque impedit aperiam modi voluptas enim ipsa dolorem consequatur!</p> 
     <div class="close-button"> 
      <span><a href="#">X</a></span> 
     </div> 
    </div> 
    <div id="panel3" class="panels"> 
     <div class="arrow" align="center"><a href="#"><img src="arrow.jpg" alt=""></a> </div> 
     <h2>panel 3</h2> 
     <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Assumenda, quo, maiores, quam praesentium obcaecati voluptate harum incidunt vel eius odio facilis atque impedit aperiam modi voluptas enim ipsa dolorem consequatur!</p> 
     <div class="close-button"> 
      <span><a href="#">X</a></span> 
     </div> 
    </div> 
    <div id="panel4" class="panels"> 
     <div class="arrow" align="center"><a href="#"><img src="arrow.jpg" alt=""></a> </div> 
     <h2>panel 4</h2> 
     <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Assumenda, quo, maiores, quam praesentium obcaecati voluptate harum incidunt vel eius odio facilis atque impedit aperiam modi voluptas enim ipsa dolorem consequatur!</p> 
     <div class="close-button"> 
      <span><a href="#">X</a></span> 
     </div> 
    </div> 
    </div> 
</div> 

回答

0

嘗試針對點擊的元素(demo)的兄弟姐妹:

$this.click(function() { 
    $(panels).slideToggle(600) 
     .siblings().slideUp(600); 
}); // end click 
+0

非常接近我所想實現並感謝您的幫助。我一直在尋找的唯一區別是,當點擊按鈕時,內容面板應該向下滑動,而不是向上滑動 – jmccommas

+0

您需要使用'animate()',然後當jQuery使'slideUp()'隱藏元素和'slideDown )'揭示元素。 – Mottie

+0

你可以在http://jsfiddle.net/nJmNy/2/上顯示例子嗎? – jmccommas