2016-08-01 1 views
0

jQuery Accordianを作成しようとしています。 H3その上でユーザーがクリックは、以下をオープンすると仮定したときjQuery Accordian DOM

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

基本的には:

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の下の私のコードを参照してください。私のjQueryは間違っている人がそれを修正する方法を教えてくれる?

おかげ

+0

h3が、それは兄弟だ、ULのchlidではありません。 eq(0)、$(this)、.parent()、children( "ul")、または$(this)を使用して、$(this).next()、$(this).siblings .closest( "。filter-cat")。children( "ul") – mhodges

答えて

2

Working fiddle。あなたのjqueryのコードで間違ったセレクタ持っ

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

$(this).parent('ul')は、それが存在していないときh3要素の親ulを見つけようとします。このことができます

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

希望:

あなたはparent()に基づいul要素を選択する必要があります。

$(".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>