Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сделать чтобы не закрывать актиыный див при открытии другого дива (https://javascript.ru/forum/misc/30948-kak-sdelat-chtoby-ne-zakryvat-aktiynyjj-div-pri-otkrytii-drugogo-diva.html)

dimas15 21.08.2012 17:40

Как сделать чтобы не закрывать актиыный див при открытии другого дива
 
// Когда страница полностью загружена
$(window).ready(function()
{
// запоминаем высоту и отступы каждого блока
$('#accordion > div').each(function()
{
$(this).data('height', $(this).height());
$(this).data('padding-top', $(this).css('padding-top'));
$(this).data('padding-bottom', $(this).css('padding-bottom'));
});

// Скрываем все секции кроме первой
$('#accordion > div:not(:first)').hide();
// Делаем первую секцию активной
$('#accordion h3:first, #accordion div:first').addClass('active');
// Если пользователь кликнул на секцию
$('#accordion > h3').click(function()
{
// Сбрасываем все секции
$('#accordion > h3').removeClass('active');
$('#accordion > div:visible').animate({height: 0, 'padding-top': 0, 'padding-bottom': 0}, 500, function() { $(this).hide() } );

// Делаем активной на которую кликнули
$(this).addClass('active');
box = $(this).next().addClass('active');
$(box).animate(
{
height: $(box).data('height'),
'padding-top': $(box).data('padding-top'),
'padding-bottom': $(box).data('padding-bottom')
}, 500);
});
});

lord2kim 21.08.2012 18:55

dimas15, предположим нужно закоментить эту строку
// Сбрасываем все секции
//$('#accordion > h3').removeClass('active');

но в таком случае все секции будут оставаться открытыми...

dimas15 21.08.2012 19:12

а как сделать чтобы при нажатии открывалась секция , а при втором нажатии закрывалась?

lord2kim 21.08.2012 19:37

dimas15, предположительно так
// Когда страница полностью загружена
$(window).ready(function()
{
// запоминаем высоту и отступы каждого блока
$('#accordion > div').each(function()
{
$(this).data('height', $(this).height());
$(this).data('padding-top', $(this).css('padding-top'));
$(this).data('padding-bottom', $(this).css('padding-bottom'));
});

// Скрываем все секции кроме первой
$('#accordion > div:not(:first)').hide();
// Делаем первую секцию активной
$('#accordion h3:first, #accordion div:first').addClass('active');
// Если пользователь кликнул на секцию
$('#accordion > h3').click(function()
{
// Сбрасываем все секции
if ($(this).hasClass('active')) {
$(this).removeClass('active');
$('#accordion > div:visible').animate({height: 0, 'padding-top': 0, 'padding-bottom': 0}, 500, function() { $(this).hide() } );
}
else {
// Делаем активной на которую кликнули
$(this).addClass('active');
box = $(this).next().addClass('active');
$(box).animate(
{
height: $(box).data('height'),
'padding-top': $(box).data('padding-top'),
'padding-bottom': $(box).data('padding-bottom')
}, 500);
}
});
});

dimas15 21.08.2012 19:40

lord2kim,
а как сделать чтобы при нажатии открывалась секция , а при втором нажатии закрывалась?

lord2kim 21.08.2012 19:42

dimas15, пост 4 не?

dimas15 21.08.2012 19:44

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

dimas15 21.08.2012 19:46

можно чтобы все секции были скрыты изначально.

lord2kim 21.08.2012 19:48

Цитата:

Сообщение от dimas15 (Сообщение 199410)
можно чтобы все секции были скрыты изначально.

// Скрываем все секции кроме первой
$('#accordion > div').hide();

dimas15 21.08.2012 19:50

да, я это комментил.


Часовой пояс GMT +3, время: 15:58.