2016-08-01 42 views
0

我想創建一個jQuery手風琴。請參閱下面我的代碼:jQuery Accordian DOM

HTML:

<div class="filter-cat colour"> 
    <h3>Colour <i class="fa fa-angle-down" aria-hidden="true"></i></h3> 
    <ul> 
     <li><input type="checkbox" checked=""> Red <span class="count">(64)</span></li> 
     <li><input type="checkbox" checked=""> Dry White <span class="count">(78)</span></li> 
     <li><input type="checkbox" checked=""> Sparkling <span class="count">(24)</span></li> 
     <li><input type="checkbox" checked=""> Sweet White <span class="count">(16)</span></li> 
     <li><input type="checkbox" checked=""> Rose <span class="count">(6)</span></li> 
     <li><input type="checkbox" checked=""> Spirits & Liqueurs <span class="count">(16)</span></li> 
    </ul> 
</div> 
<div class="filter-cat vintage"> 
    <h3>Vintage <i class="fa fa-angle-down" aria-hidden="true"></i></h3> 
    <ul> 
     <li><input type="checkbox" checked=""> 2013 <span class="count">(16)</span></li> 
     <li><input type="checkbox" checked=""> 2012 <span class="count">(12)</span></li> 
     <li><input type="checkbox" checked=""> 2011 <span class="count">(7)</span></li> 
     <li><input type="checkbox" checked=""> 2010 <span class="count">(5)</span></li> 
     <li><input type="checkbox" checked=""> 2009 <span class="count">(3)</span></li> 
     <li><input type="checkbox" checked=""> 2008 <span class="count">(1)</span></li> 
     <li><input type="checkbox" checked=""> 2007 <span class="count">(1)</span></li> 
     <li><a href="#">view more</a></li> 
    </ul> 
</div> 

的jQuery:

$(".filter-cat h3").click(function(){ 
    $(this).parent('ul').slideToggle(400); 
}); 

基本上當在H3的用戶點擊是假設打開下方。我的jQuery是錯的,有人可以告訴我如何解決它?

感謝

+0

H3是不是UL的子女學費,這是一個兄弟。您可以使用$(this).next(),$(this).siblings(「ul」)。eq(0),$(this).parent()。children(「ul」)或$(this) .closest( 「過濾貓 」)。兒童(「 UL」) – mhodges

回答

2

Working fiddle

你在你的jQuery代碼有一個錯誤的選擇:

$(this).parent('ul').slideToggle(400); 

$(this).parent('ul')將試圖找到h3元素的父ul當它不存在。

你應該選擇基於parent()ul元素:

$(this).parent().find("ul").slideToggle(400); 

希望這有助於。

$(".filter-cat h3").click(function(){ 
 
    $(this).parent().find('ul').slideToggle(400); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="filter-cat colour"> 
 
    <h3>Colour <i class="fa fa-angle-down" aria-hidden="true"></i></h3> 
 
    <ul> 
 
     <li><input type="checkbox" checked=""> Red <span class="count">(64)</span></li> 
 
     <li><input type="checkbox" checked=""> Dry White <span class="count">(78)</span></li> 
 
     <li><input type="checkbox" checked=""> Sparkling <span class="count">(24)</span></li> 
 
     <li><input type="checkbox" checked=""> Sweet White <span class="count">(16)</span></li> 
 
     <li><input type="checkbox" checked=""> Rose <span class="count">(6)</span></li> 
 
     <li><input type="checkbox" checked=""> Spirits & Liqueurs <span class="count">(16)</span></li> 
 
    </ul> 
 
</div> 
 
<div class="filter-cat vintage"> 
 
    <h3>Vintage <i class="fa fa-angle-down" aria-hidden="true"></i></h3> 
 
    <ul> 
 
     <li><input type="checkbox" checked=""> 2013 <span class="count">(16)</span></li> 
 
     <li><input type="checkbox" checked=""> 2012 <span class="count">(12)</span></li> 
 
     <li><input type="checkbox" checked=""> 2011 <span class="count">(7)</span></li> 
 
     <li><input type="checkbox" checked=""> 2010 <span class="count">(5)</span></li> 
 
     <li><input type="checkbox" checked=""> 2009 <span class="count">(3)</span></li> 
 
     <li><input type="checkbox" checked=""> 2008 <span class="count">(1)</span></li> 
 
     <li><input type="checkbox" checked=""> 2007 <span class="count">(1)</span></li> 
 
     <li><a href="#">view more</a></li> 
 
    </ul> 
 
</div>