Пользовательский Аккордеон - PullRequest
1 голос
/ 12 января 2012

У меня есть аккордеон ниже, который работает, но когда элемент открыт, если вы щелкнете по нему снова, он откроется вместо закрытия.это?

Любая помощь или совет будет здорово?

Спасибо

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

Ответы [ 2 ]

2 голосов
/ 12 января 2012

Решение:

$('.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 голосов
/ 12 января 2012

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

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

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

edit:

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

...