Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/43: Рейтинг темы: голосов - 43, средняя оценка - 4.84
162 / 162 / 11
Регистрация: 07.09.2011
Сообщений: 995

Сворачивание блока при повторном клике на него

11.04.2014, 19:31. Показов 9142. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня! На сайте используется простейший аккордеон:
JavaScript
1
2
3
4
5
6
7
8
$(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);
        })
    })
Слаб в JS поэтому есть ряд сложностей:
1. Нужно добавить функцию сворачивания блока при повторном клике на него
2. Нужно добавить функцию которая бы при клике делала спан с одним классом открытым, а при повторном нажатии, либо нажатии на следующем блоке делал бы спан закрытым. (просто два спан-а один с текстом "открыть" второй с текстом "закрыть")

Буду рад любой помощи. Заранее спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.04.2014, 19:31
Ответы с готовыми решениями:

Создать функцию для увеличения высоты блока при клике на него
Создать функцию для увелечиния высоты блока при клике на него <div id="app"> <div class="wrapper"...

При клике на ссылку в Хроме код срабатывает только при повторном клике
При клике на ссылку в Хроме код срабатывает только при повторном клике в мазили работает корректно с первого раза как исправить код ниже...

Сворачивание содержимого вкладок при повторном нажатии
Добрый день. Есть вот такой код: // Tabs $('body:not(.su-other-shortcodes-loaded)').on('click', '.su-tabs-nav span', function (e) { ...

12
162 / 162 / 11
Регистрация: 07.09.2011
Сообщений: 995
14.04.2014, 07:58  [ТС]
Если вопрос глупый и на него даже отвечать не стоит, то буду очень признателен за ссылку на почитать. СпасибО!
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
14.04.2014, 09:53
Цитата Сообщение от Lovrentiy Посмотреть сообщение
Если вопрос глупый ...
Ну, почему же? Только для полноты не хватает вашей html-структуры в вопросе. Смотрите такой пример. Если будут сложности, то показывайте свой код.
JavaScript
1
2
3
4
5
6
7
8
9
$(function() {
    var caption = $('.accordeon-caption'),
        content = $('.accordeon-content').hide();         
    caption.click(function(e) {
        e.preventDefault();
        content.not($(this).next(content)).removeClass('active').slideUp(600);
        $(this).next(content).toggleClass('active').slideToggle(600);
    });
});
1
162 / 162 / 11
Регистрация: 07.09.2011
Сообщений: 995
15.04.2014, 21:09  [ТС]
HTML5
1
2
3
4
5
6
7
8
9
10
<ul class="accordeon">
<li>
<div class="accordeon-caption">
<span class="accordeon-caption1"></span><span class="open">открыть</span><span class="close">закрыть</span>
<div class="clear">&nbsp;</div>
<h5></h5>
</div>
<div class="accordeon-content"></div
</li>
</ul>
Вот каркас.

Хотелось бы попросить помочь и с двумя спан блоками open и close, в них текст, открыть и закрыть, нужно задать им некий класс в коде, что бы при клике на аккордеон, надпись менялась, с открыть, на закрыть и т.д.
0
69 / 69 / 50
Регистрация: 25.03.2012
Сообщений: 241
15.04.2014, 22:04
Соответственно у одной надписи должно быть display none.
JavaScript
1
2
3
$('.accordeon').on('click', function(){
$('.open, .close').slideToggle();
});
0
162 / 162 / 11
Регистрация: 07.09.2011
Сообщений: 995
16.04.2014, 10:33  [ТС]
извените, не совсем понятно.

Ваш код следует добавить просто отдельно, или совместно с вышеуказанным?

CSS
1
2
3
4
5
6
7
8
span.open, span.close{
    color:white;
    padding-left:20px;  
    font-size:18px;
    line-height:28px;
}
 
span.close{display:none;}
0
69 / 69 / 50
Регистрация: 25.03.2012
Сообщений: 241
16.04.2014, 10:45
К вашему добавляйте строчку
JavaScript
1
2
3
4
5
6
 caption.click(function(e) {
        e.preventDefault();
        content.not($(this).next(content)).removeClass('active').slideUp(600);
        $(this).next(content).toggleClass('active').slideToggle(600);
        $('.open, .close').slideToggle();
    });
я просто событие для примера написал.
0
162 / 162 / 11
Регистрация: 07.09.2011
Сообщений: 995
18.04.2014, 05:41  [ТС]
Доброго дня!

Все заработало, но есть нюанс: если посетитель открыв один из пункта меню перейдет к следующему, то вместо "открыть" будет написано "закрыть" и все сбивается... как можно решить?
0
162 / 162 / 11
Регистрация: 07.09.2011
Сообщений: 995
20.04.2014, 07:58  [ТС]
Faust971, Не посодействуете?
0
69 / 69 / 50
Регистрация: 25.03.2012
Сообщений: 241
20.04.2014, 11:36
Так пробуйте:
JavaScript
1
2
3
4
5
6
caption.click(function(e) {
        e.preventDefault();
        content.not($(this).next(content)).removeClass('active').slideUp(600);
        $(this).next(content).toggleClass('active').slideToggle(600);
        $(this).find('.open, .close').slideToggle();
    });
0
162 / 162 / 11
Регистрация: 07.09.2011
Сообщений: 995
20.04.2014, 18:48  [ТС]
Faust971, к сожалению не помогло, визуально я не заметил разницы
страница с меню
код:
JavaScript
1
2
3
4
5
6
7
8
9
10
$(function() {
    var caption = $('.accordeon-caption'),
        content = $('.accordeon-content').hide();         
    caption.click(function(e) {
        e.preventDefault();
        content.not($(this).next(content)).removeClass('active').slideUp(600);
        $(this).next(content).toggleClass('active').slideToggle(600);
        $(this).find('.open, .close').slideToggle();
    });
});
P.S. вру, разница есть, но работает не совсем корректно, на последующие пункты работает корректно (если открыт пункт, то следующий за ним показывает не "закрыть", а "отркыть"), но предыдущие ведут себя опять неадекватно.
0
69 / 69 / 50
Регистрация: 25.03.2012
Сообщений: 241
20.04.2014, 19:35
Лучший ответ Сообщение было отмечено Lovrentiy как решение

Решение

Вот так попробуйте

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
$(function() {
    var caption = $('.accordeon-caption'),
        content = $('.accordeon-content').hide();         
    caption.click(function(e) {
        e.preventDefault();
 
        content.not($(this).next(content)).removeClass('active').slideUp(600);
        $('.activeCap').not($(this)).removeClass('activeCap').find('.open, .close').slideToggle(0);
        $(this).next(content).toggleClass('active').slideToggle(600);
        $(this).toggleClass('activeCap');
        $(this).find('.open, .close').slideToggle(0);
    });
});
Добавлено через 6 минут
Сохранил вашу страницу проверил код все работает)
1
162 / 162 / 11
Регистрация: 07.09.2011
Сообщений: 995
20.04.2014, 22:39  [ТС]
Faust971, Огромное спасибо!

Извините за назойливость, но уже не в первом аккордеоне интересует, есть ли способ фиксировать страницу при работе с аккордеоном? При клике на пункты в "верхушке" аккордеона, он раскрывается вниз и все хорошо, но когда мы просматриваем пункт значительных размеров, и нажимаем на пункт ПОД ним, то при сворачивании предыдущего блока, видим как правило или середину, или конец текста открываемого пункта.
Сталкивались ли с подобным? Знаете ли решение или какую нибудь хитрость?

Заранее спасибо за ответ!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.04.2014, 22:39
Помогаю со студенческими работами здесь

При клике на ссылку "Подробнее" увеличить высоту блока li, и вынести в него подробный текст
Доброго всем дня, а может быть и вечера. Пожалуйста помогите сделать одну вещь: имеется список в li находится контент: &lt;ul...

Сделать, чтобы при клике на кнопке, блок #cont исчез, а при повторном клике блок #cont появился
Как сделать, чтобы при клике на кнопке, блок #cont исчез, а при повторном клике блок #cont появился? Вроде это уже устаревший способ и не...

При повторном клике меню не закрывается
Сделала меню с выпадающим списком на wordpress. При клике на меню, выпадающее меню открывается, при клике на другое выпадающее меню ,...

Подвисание при повторном клике по кнопке
Здравствуйте! Как можно решить такую проблему: При клике по button1 из базы в datagrigview выодится таблица (размер 15х600) Потом...

Сохранить фокус при повторном клике по input
При повторном клике по input возможность набора текста пропадает, фокус исчезает, как это можно отменить? Мне нужно чтобы я мог свободно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru