2014-02-14 38 views
0

我正在使用Jquery的slideToggle()來打開和關閉我的主菜單。 slideToggle()完美地工作。使用JQuery打開/關閉多個Divider slideToggle()

我需要做的是得到slideToggle關閉一個div時打開一個不同的。我嘗試了很多不同的方法來達到這個目標,但我一直沒能做到。

我發現計算器以下建議:

uses the id of the tag to trigger slideToggle()

我找到了這一建議的是,每次我點擊每個菜單項的頁面跳轉到頂部(就像它被重新加載)和我不喜歡那樣。

我也發現這個代碼點點:

uses the id of the of the div

,我打算給第三個框添加到小提琴,看看發生了什麼事,但它並沒有以同樣的方式工作的第2盒做了,我無法弄清楚爲什麼。

這是我的HTML看起來像:

  <div class="menu-item-1"> 
       <a href="#">Recovery</a> 
      </div> 
      <div class="menu-item-2"> 
       <a href="#">Forensics</a> 
      </div> 
      <div class="menu-item-3"> 
       <a href="#">Erasure</a> 
      </div> 
      <div class="menu-item-4"> 
       <a href="#">Training</a> 
      </div> 
      <div class="menu-item-5"> 
       <a href="#">Products</a> 
      </div> 

這是我的JavaScript是什麼樣子:

$(".menu-item-1").click(function() { 
    $(".recovery-bg").slideToggle("fast", "easeOutBack"); 
}); 

$(".menu-item-2").click(function() { 
    $(".forensic-bg").slideToggle(); 
}); 

$(".menu-item-3").click(function() { 
    $(".erasure-bg").slideToggle(); 
}); 

$(".menu-item-4").click(function() { 
    $(".training-bg").slideToggle(); 
}); 

$(".menu-item-5").click(function() { 
    $(".product-bg").slideToggle(); 
}); 

這裏是的div的HTML代碼的slideToggle():

<!--Expanding Recovery Menu--> 
     <div class="recovery-bg arrow_box_recovery toggle hidden-phone"> 
    <div class="container expand"> 
     <div class="row"> 
      <div class="span2 offset1"> 
       <div class="menu-item"> 
        <a href=""><p>Data <br/> Recovery</p></a> 
       </div> 
      </div> 
      <div class="span2 offset1"> 
       <div class="menu-item"> 
        <a href=""><p>Raid <br/> Recovery</p></a> 
       </div> 
      </div> 
      <div class="span2 offset1"> 
       <div class="menu-item"> 
        <a href=""><p>Forensic <br/> Data Recovery</p></a> 
       </div> 
      </div> 
      <div class="span2 offset1"> 
       <div class="menu-item"> 
        <a href=""><p>Tape <br/> Recovery</p></a> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 
<!--/Expanding Recovery Menu--> 

我經歷了一些其他教程,但在他們中我注意到有些人沒有href在他們的標籤,我想避免這樣的東西,如果我可以。

如果任何人都可以提供幫助,那就太好了。

+0

哪裏是打開/關閉元素,如'恢復-bg'標記 –

+0

我添加了滑動Toggle()的div的html。在我的CSS中,我剛剛設置.recovery-bg顯示沒有。當你點擊它是可見的。 – fnk

+0

試試這個:http://jsfiddle.net/u7Y2r/189/ – ThermalCube

回答

3

我會做出這樣

<div class="menu-item menu-item-1" data-target=".recovery-bg"> 
    <a href="#">Recovery</a> 
</div> 
<div class="menu-item menu-item-2" data-target=".forensic-bg"> 
    <a href="#">Forensics</a> 
</div> 
<div class="menu-item menu-item-3" data-target=".erasure-bg"> 
    <a href="#">Erasure</a> 
</div> 
<div class="menu-item menu-item-4" data-target=".training-bg"> 
    <a href="#">Training</a> 
</div> 
<div class="menu-item menu-item-5" data-target=".product-bg"> 
    <a href="#">Products</a> 
</div> 
<div class="menu-toggle recovery-bg"> 
    recovery-bg 
</div> 
<div class="menu-toggle forensic-bg"> 
    forensic-bg 
</div> 
<div class="menu-toggle erasure-bg"> 
    erasure-bg 
</div> 
<div class="menu-toggle training-bg"> 
    training-bg 
</div> 
<div class="menu-toggle product-bg"> 
    product-bg 
</div> 

那麼一些細微的變化標記

jQuery(function ($) { 
    var $bgs = $('.menu-toggle'); 
    $('.menu-item').click(function() { 
     var $target = $($(this).data('target')).stop(true).slideToggle(); 
     $bgs.not($target).filter(':visible').stop(true, true).slideUp(); 
    }) 
}) 

演示:Fiddle

+0

你介意解釋一些jQuery嗎?我可以看到你已經創建了一個變量$ bgs,並且你的存儲菜單在那裏切換,然後你有觸發slideToggle()的.click函數。最後一行代碼是做什麼的?我認爲它檢查是否div打開不是目標,如果它不是它滑動並關閉它。 – fnk

+0

爲了切換所有div,我們添加一個名爲'menu-toggle'的類,如上所示。然後再在'menu-item-x'元素中添加一個名爲'menu-item'的類和一個名爲'data-target'的屬性,其中包含必須切換的'div'的選擇器。在點擊處理程序中,我們首先切換目標div,然後我們隱藏任何可能可見的其他'menu-toggle'元素 - 這是最後一行 –

相關問題