2013-03-27 110 views
1

這裏是我的代碼的jQuery的slideToggle家長和孩子

<li class="page_item "><a href="javascript:">A</a> 
<ul class="children"> 
    <li class="page_item"><a href="">1</a></li> 
    <li class="page_item"><a href="">2</a></li> 
</ul> 
</li> 
<li class="page_item "><a href="">B</a> 
<ul class="children"> 
    <li class="page_item"><a href="">1</a></li> 
    <li class="page_item"><a href="">2</a></li> 
    <li class="page_item"><a href="">3</a></li> 
    <li class="page_item"><a href="">4</a></li> 
</ul> 
</li> 

<li class="page_item "><a href="">C</a> 
<ul class="children"> 
    <li class="page_item"><a href="">1</a></li> 
    <li class="page_item"><a href="">2</a></li> 
    <li class="page_item"><a href="">3</a></li> 
    <li class="page_item"><a href="">4</a></li> 
</ul> 
</li> 

$('.page_item').click(function(){ 

    $('ul.children').slideToggle(); 
}); 
ul.children{ 
    display: none; 
} 

online sample

我怎樣才能讓這樣的,當我點擊某個版塊,只需打開一個部分的孩子,當我點擊B,只顯示B的。沒有打開整個部分打開。 由於

+0

順便說一句,你應該嘗試投入'.stop()''的.slideUp()'之前,所以它不排隊一堆如果點擊多次,動畫效果如下 – 2013-03-27 22:13:15

回答

6

範圍的滑動切換到當前元素,使用this

$('.page_item').click(function(){ 
    var that = this; 
    $('.page_item').each(function(){ 
    if(that == this)return true;//continue 
    $('.children:not(:hidden)',this).slideToggle(); 
    }); 
    $('ul.children',this).slideToggle(); 
}); 

編輯以關閉其他顯示列表。 jsFiddle Demo

+0

謝謝,但如果我打開了A部分,並單擊了部分B,則部分A仍然打開 – olo 2013-03-27 22:06:40

+0

@olo - 請參閱編輯。 – 2013-03-27 22:15:56

+0

更好,多謝了 – olo 2013-03-27 22:18:21

1

像這樣:

$('.page_item').click(function(){ 
    $('ul').slideUp(); 
    $(this).find('ul').slideToggle(); 

    return false; 
}); 
+0

謝謝,如何防止多節打開,只需要一個 – olo 2013-03-27 22:08:12

+0

我編輯了我的答案,它現在關閉顯示你想要打開的那個之前的其他人。 – 2013-03-27 22:10:00

+0

真棒,非常感謝,學習滑動 – olo 2013-03-27 22:11:06