2012-01-12 3 views
1

У меня есть аккордеон, ниже которого работает, но когда объект открыт, если вы нажмете его снова, он откроется вместо закрытия.Пользовательский Accordion

Я не уверен в наилучшем способе адаптации кода ниже для достижения этого?

Любая помощь или совет были бы замечательными?

Благодаря

$('.acc h2').click(function() { 
    $('.acc h2.open').nextUntil('h2').stop(true, true).slideToggle(); 
    $('.acc h2.open').removeClass('open'); 
    $(this).nextUntil('h2').stop(true, true).slideToggle(900); 
    $(this).toggleClass('open'); 
}); 

<div class="acc"> 

    <h2>1. Title 1</h2> 
    <div><p>text 1</p></div> 

    <h2>2. Title 2</h2> 
    <div><p>text 2</p></div> 

    <h2>3. Title 3</h2> 
    <div><p>text 3</p></div> 

</div><!--END acc--> 
+0

Вы хотите, чтобы открывать и закрывать самостоятельно или иметь только один открытый за раз? – kwelch

+0

Один открытый в любой момент времени. – Jemes

ответ

2

Решение:

$('.acc h2').next('div').hide(); 
$('.acc h2').click(function() { 
if($(this).next('div').is(':visible')) 
{ 
    $(this).next('div').slideUp();  
} 
else{ 
    $('.acc h2').next('div').slideUp(); 
    $(this).next('div').slideToggle(); 
}  
}); 

Демонстрации:

http://jsfiddle.net/5NAhV/1/

или

http://jsfiddle.net/5NAhV/2/

+0

Спасибо за помощь Mandeep, отлично работает. – Jemes

+0

рады помочь. –

0

Проблема с переключением в том, что, когда пользователь нажимает несколько раз, анимация начинается в очереди, которая является боль.

Вот альтернатива:

http://jsfiddle.net/adaz/5NAhV/3/

редактировать:

http://jsfiddle.net/5NAhV/2/ да, это (": видимые") делает работу!

+0

Спасибо за помощь Adaz. – Jemes