Удаление класса только по щелчку на сам объект, но не когда кликаешь на следующий
День добрый!
Разбираюсь с jquery. Буду рад, если подскажите. Например, имеем два блока А и B. Простой пример, имеется аккордеон (в нем два блока А и B), открывается блок (А) по нажатию. При клике на другой (B), (B) открывается, а предыдущий (A) сворачивается. Т.е. всегда открыт только один блок. А должно открываться неограниченное число. Вот всю голову сломал, как не удалять класс открытому при клике на другой, а закрывать только при втором клике на открытый блок. Буду признателен за помощь.
$(function() {
$('.accordeon-content').not('.active').hide();
$('.accordeon-caption').click(function() {
$('.accordeon-content').not($(this).next('.accordeon-content')).removeClass('active').slideUp(600);
$(this).next('.accordeon-content').addClass('active').slideDown(600);
})
})
|
Mrjoey,
а html где?
$(function() {
$('.accordeon-content').not('.active').hide();
$('.accordeon-caption').click(function() {
$(this).next('.accordeon-content').toggleClass('active').slideToggle(600);
})
})
|
Спасибо за ответ. Пробовал Ваш код, не выходит что-то каменный цветок(
<dl class="accordeon"> <dt class="accordeon-caption">Заголовок</dt> <dd class="accordeon-content active"> 123 </dd> <dt class="accordeon-caption">Заголовок</dt> <dd class="accordeon-content"> 567 </dd> <dt class="accordeon-caption">Заголовок</dt> <dd class="accordeon-content"> 890 </dd> </dl> |
Mrjoey,
и что не так ?
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Untitled</title>
<script type='text/javascript' src='http://code.jquery.com/jquery-1.8.3.js'></script>
<script>
$(function() {
$('.accordeon-content').not(':first').hide();
$('.accordeon-content:first').addClass('active')
$('.accordeon-caption').click(function() {
$(this).next('.accordeon-content').toggleClass('active').slideToggle(600);
})
})
</script>
</head>
<body>
<dl class="accordeon">
<dt class="accordeon-caption">Заголовок</dt>
<dd class="accordeon-content">
123
</dd>
<dt class="accordeon-caption">Заголовок</dt>
<dd class="accordeon-content">
567
</dd>
<dt class="accordeon-caption">Заголовок</dt>
<dd class="accordeon-content">
890
</dd>
</dl>
</body>
</html>
|
спасибо преогромное! выручили!
А можно ещё спросить, что Вы бы лично посоветовали почитать, чтобы разбираться в jquery? |
Mrjoey,
http://jquery.page2page.ru/ |
Можно ещё один вопрос?
Можно как то для первого блока, по умолчанию сразу назначать класс active?
<dt class="accordeon-caption">Заголовок</dt>
<dd class="accordeon-content">
123
</dd>
чтобы было вот так: <dl class="accordeon"> <dt class="accordeon-caption">Заголовок</dt> <dd class="accordeon-content active"> 123 </dd> <dt class="accordeon-caption">Заголовок</dt> <dd class="accordeon-content"> 567 </dd> <dt class="accordeon-caption">Заголовок</dt> <dd class="accordeon-content"> 890 </dd> </dl> |
Цитата:
|
Благодарю!) ларчик просто открывался.
А я полез в справочник, на который вы ссылку скинули, стали пробовать, получилось примерно так: $('.show-layered dd.accordeon-content:first').css('display', 'block'); задумка хоть и верна по-моему, но там по умолчанию дописывается display: none; Надо было не свойство, а класс присваивать, верно? |
| Часовой пояс GMT +3, время: 14:54. |