2013-08-14 2 views
0

Вопрос Ответил в комментариях ниже. См. Ссылку на FiddleJQuery аккордеон - кнопка открытия и закрытия

Я ищу небольшую помощь с нижним куском jquery.

Короче говоря, я хочу, чтобы при нажатии кнопки «О программе» открывается аккордеон (.toggle-container), содержащий текст и кнопку «Закрыть». (Эта часть, которую я могу сделать.) Сложная часть заключается в том, что в этот момент я хочу, чтобы кнопка About исчезла, пока аккордеон снова не закрыт.

Вы можете видеть из скрипки, что странные вещи происходят.

На странице будет несколько разделов, и только один раздел должен быть открыт за раз.

Fiddle

<section class="staff-member"> 
<figure> 
    <h2>:(</h2> 
    <figcaption> 
     <a class="open-profile" href="">About</a> 
      <div class="toggle-container"> 
       <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut aliquet, enim at hendrerit bibendum, leo turpis feugiat risus, id sagittis eros urna auctor lorem. Suspendisse interdum turpis ut est auctor dignissim.</p> 
       <a class="close-profile" href="">Close</a> 
      </div> 
    </figcaption> 
</figure> 
</section> 

(function($, document, undefined){ 
$('.toggle-container').each(function() { 
var $container = $(this); 
var $open = $container.siblings('.open-profile'); 
var $close = $container.find('.close-profile'); 

$open.on('click', function(e) { 
    e.preventDefault(); 
    $open.hide(); 
    $container.slideUp('fast'); 
}); 
$close.on('click', function(e) { 
    e.preventDefault(); 
    $container.slideDown('fast'); 
    $open.show(); 
}); 
}); 
})(jQuery, document); 

ответ

2

1) С вашей скрипкой, вы потеряли в .slideDown и slideUp.

2 Не нужно скрывать «О» и «Закрыть».

$open.on('click', function(e) { 
     e.preventDefault(); 
     $container.slideDown('fast'); //corrected it 
    }); 
    $close.on('click', function(e) { 
     e.preventDefault(); 
     $container.slideUp('fast'); //corrected it 

    }); 

Проверить это JSFiddle

Обновление: Так как вам нужно, чтобы скрыть ссылку просто избавиться от моей 2-ой точки.

open.on('click', function(e) { 
     e.preventDefault(); 
     $open.hide(); // don't remove   
     $container.slideDown('fast'); //corrected it 
    }); 
    $close.on('click', function(e) { 
     e.preventDefault(); 
     $container.slideUp('fast'); //corrected it 
     $open.show(); // don't remove 
    }); 
+0

Практически там есть две вещи. 1) Ссылка о ссылке не скрыта, когда аккордеон открыт 2) Аккордеон не должен открываться по умолчанию (я просто поместил $ (".gog-контейнер"). Hide(); в начале чтобы решить эту проблему, и она, похоже, работает. Не так уверен в № 1, хотя). –

+0

ОК, видимо, у меня нет достаточного количества ответов, чтобы ответить на мой собственный вопрос. Во всяком случае, благодаря user1671639, я думаю, что понял. Не уверен, что это лучшее решение, но, похоже, оно работает. Нажмите [ссылка] (http://jsfiddle.net/YNFM5/14/) на новую скрипку. –

+0

@BertMurphy О, вам нужно скрыть ссылку наоборот. Это просто, избавьтесь от моего второго момента. – Praveen