Сейчас: 17:55:38   26-го апреля 2024 г.
UsefulScript.ruСкриптыРазныеОбновленный скрипт спойлера
95
323

Обновленный скрипт спойлера с плавным открытием и скрытием содержимого

Данный скрипт является небольшим обновлением ранее опубликованного нами скрипта в теме Спойлер с плавным открытием. Данный код в сравнении с предыдущим стал немного компактнее и надежнее (меньше тегов, следовательно, меньше вероятности ошибиться).


Скрипт все также поддерживает плавное появление и плавное скрытие содержимого под спойлером. Для реализации плавного появления и скрытия содержимого спойлера Вам потребуется подключить на сайте библиотеку jQuery следующим образом:

JavaScript код:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js">
</script>

Для наглядной демонстрации работы предлагаемого нами скрипта, обратите внимание на пару спойлеров, находящихся чуть ниже:


Текст под спойлером
имеет класс spoiler_body.
Для придания стиля данному тексту
просто добавьте еще один класс.
А это уже текст второго спойлера!
Данный спойлер также позволяет скрывать
излишнее на сайте!

Для получения на своем сайте точно таких же спойлеров, как в примере выше, Вам необходимо будет добавить на свой сайт JavaScript код, который будет отвечать за плавное открытие и скрытие содержимого спойлеров:

JavaScript код:
<script type="text/javascript">
$(
document).ready(function(){
 $(
'.spoiler_links').click(function(){
  $(
this).next('.spoiler_body').toggle('normal');
  return 
false;
 });
});
</script>

Далее, в том месте Вашего сайта, где Вы планируете разместить спойлеры, необходимо использовать такой код:

HTML код:
<div class="spoiler_links blue">Спойлер № 1 (кликните для открытия/закрытия)</div>
<
div class="spoiler_body">
 
Текст под спойлером<br>
 
имеет класс spoiler_body.<br>
 
Для придания стиля данному тексту<br>
 
просто добавьте еще один класс.
</
div>

<
div class="spoiler_links green">Спойлер № 2 (кликните для открытия/закрытия)</div>
<
div class="spoiler_body">
 
А это уже текст второго спойлера!<br>
 
Данный спойлер также позволяет скрывать<br>
 
излишнее на сайте!
</
div>

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


Для того чтобы при первоначальной загрузке странички, все спойлеры были закрыты (скрыто их содержимое) и курсор мышки изменялся при наведении на заголовки спойлеров, необходимо в шапку сайта между тегами <head> и </head> добавить стили для спойлеров:

HTML код:
<style type="text/css">
 .
spoiler_body displaynonefont-styleitalic; }
 .
spoiler_links cursorpointerfont-weightboldtext-decorationunderline; }
 .
blue color#000099; }
 
.green color#009900; }
</style>

Как Вы могли заметить, для каждого отдельного заголовка спойлера (и его содержимого тоже) можно легко добавить дополнительный стиль, в котором Вы можете придать спойлеры индивидуальное оформление. Мы не стали сильно менять оформление заголовков спойлеров, а просто задали им разные цвета.


При необходимости, как и в предыдущей версии спойлера, можно добавить кнопки "Закрыть все" и "Открыть все" для открытия/закрытия всех спойлеров на страничке. Для этого добавьте себе на сайт вот такой код:

HTML код:
<input type="button" value="Закрыть все" onclick=$('.spoiler_body').hide('normal')>
<
input type="button" value="Открыть все" onclick=$('.spoiler_body').show('normal')>

Если Вам необходимо, чтобы одновременно мог быть открыт только один спойлер на страничке, а другие при этом сами закрывались, то замените выше приведенный JavaScript код на такой:

JavaScript код:
<script type="text/javascript">
$(
document).ready(function(){
 $(
'.spoiler_links').click(function(){
    if ($(
this).next('.spoiler_body').css("display")=="none") {
        $(
'.spoiler_body').hide('normal');
        $(
this).next('.spoiler_body').toggle('normal');
    }
    else $(
'.spoiler_body').hide('normal');
    return 
false;
 });
});
</script>

Все. Теперь Вы можете делать у себя на сайте сколько угодно спойлеров и добавлять им свои собственные стили.

Дата создания: 22:05:25 01.09.2014 г.
Посещений: 35670 раз(а).

Комментарии посетителей (100 шт.):
Елена
6
# 1863
(15:25:07  02.09.2014 г.)

Здравствуйте! Спасибо за обновленную статью! Но у меня ничего не вышло, может поняла что-то не так...
Ответить

Administrator
5
# 1865
(20:32:01  02.09.2014 г.)

Чтобы не загромождать комментарии, вынес Вашу проблему и её решение в отдельную тему на форуме - http://usefulscript.ru/forum/showthread.php?tid=295
Ответить

Павел
0
# 1875
(13:40:09  11.09.2014 г.)

Скажите, пожалуйста, как сделать, чтобы 100 пикселей блока было открыто, остальное скрыто. При нажатии раскрывается все.
Ответить

Administrator
2
# 1876
(18:22:14  11.09.2014 г.)

Как самый простой вариант, если высота открытых блоков постоянная, используйте CSS стиль:
.spoiler_body { overflow: hidden; height: 100px; font-style: italic; }
И JavaScript код:
$('.spoiler_links').click(function(){
if ($(this).next('.spoiler_body').height()=='100') { $(this).next('.spoiler_body').animate({height:'300'},'normal'); }
else $(this).next('.spoiler_body').animate({height:'100'},'normal');
return false;
});
Если конечная высота блоков может меняться, и заранее неизвестна, то тут все будет немного сложнее.
Ответить

Павел
4
# 2286
(17:37:39  28.02.2015 г.)

Использовал этот скрип подключал к модуля для вывода товаров, но нужно чтобы блок <div class="spoiler_links green"> был ниже <div class="spoiler_body"> но он тогда не работает, может есть решение?
Ответить

Administrator
-1
# 2288
(18:31:02  28.02.2015 г.)

Конечно есть. Замените в скрипте в трех местах функцию next на prev!
Ответить

Андрей
2
# 1942
(00:31:45  05.10.2014 г.)

Как сделать при загрузки страницы один открытый спойлер?
Ответить

Administrator
0
# 1943
(00:41:51  05.10.2014 г.)

Добавьте новый стиль: .spoiler_open { display: block; }
Теперь блоку, который должен быть изначально открыт, добавьте этот новый стиль:
<div class="spoiler_body spoiler_open">
Ответить

Алексей
2
# 1951
(22:05:15  07.10.2014 г.)

Как сделать чтобы при наведении курсора на картинку она менялась (№2), при открытом спойлере опять менялась (№3), при закрытии становилась исходной (№1).
Ответить

Administrator
1
# 1952
(13:45:11  08.10.2014 г.)

Ваш вопрос целиком перенес на наш форум, а здесь оставил краткую суть вопроса. Ответ найдете там же.
Ответить

Дамир
0
# 1961
(16:44:42  14.10.2014 г.)

Использую способ, когда открывает один спойлер, а другие при этом закрываются. Как сделать чтобы открытый спойлер мог иметь значение :active (хочу добавить background-color) и при этом при нажатии на другой спойлер это убиралось?
Ответить

Administrator
5
# 1964
(23:36:35  14.10.2014 г.)

Предлагаю сделать это через JQuery. Добавьте новый стиль с фоном, например bg_color, а JavaScript код измените на такой:
$(document).ready(function(){
$('.spoiler_links').click(function(){
$('.spoiler_links').removeClass('bg_color');
if ($(this).next('.spoiler_body').css("display")=="none") {
$('.spoiler_body').hide('normal');
$(this).addClass('bg_color').next('.spoiler_body').toggle('normal');
}
else $('.spoiler_body').hide('normal');
return false;
});
});
Ответить

Дамир
1
# 1971
(21:24:06  15.10.2014 г.)

Скрипт работает отлично, но столкнулся с проблемой...
Сделал вертикальное меню (каталог), где каждый раздел - спойлер, а под спойлером конкретные товары.
При нажатии на товар - переход на нужную страницу, а спойлер со списком закрывается. Как сделать, чтобы спойлер не закрывался?
Ответить

Administrator
0
# 1973
(22:24:40  15.10.2014 г.)

А он и не должен закрываться. Возможно в самой структуре спойлеров где-то неправильная вложенность. Тут надо код смотреть.
Или Вы имеете ввиду переход по ссылке в том же окне, а потом при возвращении обратно, чтобы был открыт последний из открытых спойлеров? Тогда, наверно, придется использовать cookies.
Ответить

Сергей
0
# 2106
(17:03:20  09.12.2014 г.)

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

Administrator
0
# 2109
(21:51:14  09.12.2014 г.)

Для смены эффекта разворачивания замените в JavaScript коде "toggle" на "slideToggle".
Ответить

Влад
0
# 2365
(06:23:22  30.03.2015 г.)

Здравствуйте, огромное спасибо.
Подскажите, пожалуйста, как мне сделать, чтобы при загрузке страницы один из спойлеров сразу был открыт?
Ответить

Administrator
0
# 2367
(19:54:10  30.03.2015 г.)

Ответ есть в комментарии # 1943.
Ответить

Павел
0
# 2377
(09:08:22  04.04.2015 г.)

Добрый день!
Подскажите, пожалуйста, как добавить в самый низ контейнера с содержимым спойлера, ссылку «Закрыть спойлер»? Как это сделано на rutracker.
Ответить

Administrator
0
# 2378
(21:12:10  04.04.2015 г.)

Добавьте внутрь тела спойлера ссылку <div class="spoiler_close">Закрыть спойлер</div>, а в JavaScript код:
$('.spoiler_close').click(function(){
$(this).parent('.spoiler_body').toggle('normal');
});
Ответить

Натали
-1
# 2402
(00:49:28  19.04.2015 г.)

Цитата: "Для смены эффекта разворачивания замените в JavaScript коде "toggle" на "slideToggle".
А как сменить эффект разворачивания при нажатии на кнопку "Развернуть все"?
Ответить

Administrator
1
# 2404
(12:25:49  19.04.2015 г.)

Для "Закрыть все" используйте функцию slideUp(), а для "Открыть все" - slideDown().
Ответить

Никита
1
# 2450
(13:30:45  02.05.2015 г.)

Здравствуйте, отличный скрипт! Подскажите, что нужно править, чтобы открытый спойлер закрывался при нажатии на любую часть экрана, кроме как на сам спойлер?
Ответить

Administrator
1
# 2451
(13:36:50  02.05.2015 г.)

Добавьте в JavaScript код строчку:
$(document).click(function(){ $('.spoiler_body').hide('normal'); });
Ответить

Никита
0
# 2452
(13:46:49  02.05.2015 г.)

Работает, только тогда, когда нажимаю на пустую область, но когда нажимаю элементы href="#" на этой странице, спойлер не сворачивается. Есть ли способ сделать так, чтобы он сворачивался при клике на href="#" на этой же странице?
Ответить

Administrator
0
# 2453
(14:01:04  02.05.2015 г.)

Странно. У меня все отлично работает в разных браузерах.
Ответить

Константин
0
# 2482
(10:56:31  14.05.2015 г.)

Здравствуйте, столкнулся с такой проблемой: если разместить два и более спойлера в ряд - то при открытии любого из них раскрывающийся блок с текстом появляется слева.
Как сделать чтобы текст раскрывался строго под открытым спойлером?
Ответить

Administrator
0
# 2484
(01:05:06  16.05.2015 г.)

Поместите спойлеры внутрь блочных элементов, например, внутрь: <div style="float: left; width: 400px;"></div>
Или в таблицу.
Ответить

Юрий
0
# 2494
(07:48:18  23.05.2015 г.)

Добрый день. Прикрутил спойлер в цикл.
Возникла необходимость прокрутить страницу на заголовок спойлера при его закрытии (есть кнопка в теле спойлера), т.к. текст достаточно большой и при закрытии страница наоборот уходит вниз.
Что можно с этим сделать? Спасибо.
Ответить

Administrator
0
# 2504
(22:49:00  31.05.2015 г.)

Добавьте кнопке в теле спойлера класс close_spoiler (например, <b class="close_spoiler">Закрыть</b>).
Так же добавьте JavaScript код:
$(".close_spoiler").click(function(){
$("html,body").animate({scrollTop:$(this).parent().prev().offset().top},"slow");
$(this).parent('.spoiler_body').toggle('normal');
});
Ответить

Даниель
0
# 2617
(15:17:27  12.08.2015 г.)

А возможно ли вставить спойлер в спойлер? Если да, то каким образом? :)
Ответить

Administrator
0
# 2628
(23:02:05  13.08.2015 г.)

Просто поместите один спойлер внутрь другого как в примере ниже:
<div class="spoiler_links blue">Спойлер №1</div>
<div class="spoiler_body">
Основной текст.
<div class="spoiler_links green">Спойлер №2</div>
<div class="spoiler_body">
Дополнительный текст.
</div>
Продолжение основного текста.
</div>
Ответить

Игорь
0
# 2671
(17:06:50  01.09.2015 г.)

Привет. Написано что надо добавить это на свой сайт:
<script type="text/javascript">
$(document).ready(function(){
$('.spoiler_links').click(function(){
$(this).next('.spoiler_body').toggle('normal');
return false;
});
});
</script>
А куда это надо на свой сайт добавлять то?
Ответить

Administrator
0
# 2672
(21:45:50  01.09.2015 г.)

В тело странички (например, в футер) или в подгружаемый сайтом js файл.
Ответить

Ярослав
0
# 2687
(19:54:33  08.09.2015 г.)

Здравствуйте, воспользовался решением из комментария # 1943 для того, чтобы при загрузке один спойлер был открыт. Все работает, спасибо! Однако необходимо, чтобы при открытии любого другого спойлера он все-таки закрывался, каким образом я могу это сделать? Спасибо.
Ответить

Administrator
0
# 2688
(21:23:33  08.09.2015 г.)

Вы не внимательно прочитали тему. В конце темы (над комментариями) есть JavaScript код, при использовании которого одновременно может быть открыт только один спойлер на страничке.
Ответить

Ярослав
1
# 2689
(21:32:23  08.09.2015 г.)

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

Administrator
1
# 2690
(00:11:54  09.09.2015 г.)

Сделал в виде отдельной темы - Спойлер с отдельным заголовком.
Ответить

Ярослав
0
# 2691
(06:54:54  09.09.2015 г.)

Благодарю! У меня еще один вопрос! В соответствии с вашим ответом в комментарии #1943 я сделал, чтобы один комментарий при загрузке был открыт, а в соответствии с комментарием #1964 сделал изменение цвета активного заголовка спойлера! Каким образом можно добиться того, чтобы при загрузке раскрытый спойлер имел статус активного и, соответственно, его заголовок менял цвет? Спасибо!
Ответить

Administrator
0
# 2692
(15:24:20  09.09.2015 г.)

Приложите получившийся у Вас код целиком, а то так трудно гадать.
P.S. Ваш код и новый выложил на форуме.
Ответить

Дмитрий
1
# 2714
(16:00:20  21.09.2015 г.)

Что мне нужно сделать для того что бы при открытии спойлера у меня нижняя часть сайта сдвигалась вниз?
Ответить

Administrator
0
# 2715
(16:48:54  21.09.2015 г.)

А сейчас разве не так? При открытии спойлера все, что находится ниже содержимого спойлера, сдвигается на высоту содержимого спойлера.
Ответить

Дмитрий
0
# 2716
(17:07:48  21.09.2015 г.)

Суть в том, что я в спойлер запихнул менюшку небольшую и при открытии спойлера оно залазит на меню.
Ответить

Administrator
0
# 2717
(17:22:40  21.09.2015 г.)

Скиньте ссылку на страничку или код целиком и тогда, возможно, что-то исправим.
Ответить

Алексей
0
# 4605
(20:29:35  28.01.2020 г.)

Добрый день!
Увидел ваш спойлер, понравилось, решил попробовать. У меня страница не раздвигается, а текст прямо падает на картинку, не отодвигает ее вниз. Прошу вас подробней рассказать. Так как я ни когда вообще сайтов не делал.
Ответить

Administrator
0
# 4607
(22:00:33  28.01.2020 г.)

Так у Вас блок со спойлерами и изображение имеют стиль position: absolute; с жестко заданными размерами и координатами на экране.
Ответить

Костя
0
# 2736
(13:40:14  01.10.2015 г.)

Подскажите, пожалуйста, при добавлении скрипта в шаблон страницы у меня пропадает главное меню - вместо него одна вкладка "Главная" и все...
Ответить

Administrator
0
# 2739
(14:29:33  01.10.2015 г.)

Полный текст Вашего сообщения и ответ на него перенес на наш форум.
Ответить

Алекс
0
# 2745
(20:49:02  05.10.2015 г.)

Подскажите, пожалуйста, как сделать, чтобы при нажатии на ссылку (я вместо текста картинку ссылкой сделал) переносило на начало открываемой картинки (открывается тоже картинка)?
Ответить

Артем
0
# 2755
(04:14:43  09.10.2015 г.)

Здравствуйте, отличный спойлер, всем понравился на сайте, но есть несколько моментов по настройке.
У нас на сайте спойлер чат открывает, кнопка вверху на всю ширину страницы и текст в ней "зайти в чат" надо как-то отцентрировать текст в кнопке, в css -text-align: center- не срабатывает почему то, а если в HTML центрировать тегами, то остальные стили сss не подключаются или строчки чата центрируется тоже, в зависимости где ставить теги по центру в HTML.
И еще как сделать, чтобы при открытом спойлере, убиралась кнопка "зайти в чат" или чтоб текст появлялся "закрыть чат".
Ответить

Administrator
1
# 2758
(15:41:21  10.10.2015 г.)

Сложно сказать, почему у Вас так происходит, не увидев кода странички.
Для смены текста заголовка спойлера добавьте после строчки: $('.spoiler_links').click(function(){
две строчки:
if ($(this).text()=='Закрыть чат') $(this).text('Зайти в чат');
else $(this).text('Закрыть чат');
Ответить

Артем
1
# 2761
(11:28:17  11.10.2015 г.)

Спасибо, со стилями кнопки разобрался, и ваш код закрытия сработал, и еще вопросик не отвеченный остался, в идеале нам было бы хорошо, чтобы при открытом спойлере кнопка совсем исчезала, есть такая возможность?
Ответить

Administrator
2
# 2762
(18:43:41  11.10.2015 г.)

Конечно, но кнопка исчезнет до перезагрузки странички.
Добавьте после строчки: $('.spoiler_links').click(function(){
строчку: $(this).toggle('normal');
Ответить

Артем
0
# 2763
(21:04:11  11.10.2015 г.)

Идеально, это именно то, что нам нужно было! Огромнейшая вам благодарность! Желаю успехов вашему сайту.
Ответить

Влад
0
# 2885
(14:30:14  08.12.2015 г.)

Спасибо за скрипт, отличный и то что надо. Столкнулся с проблемой. Нужно чтоб открытый был только один, нажимаю на первый - открывается, пока он открыт, нажимаю на второй, первый закрывается, а второй не открывается вообще. И когда первый закрыт, второй всё равно не открывается. Использовал код в конце статьи.
Ответить

Administrator
0
# 2887
(22:13:26  08.12.2015 г.)

Проверил, все работает. Скопируйте весь код из данной темы на новую (пустую) страничку и протестируйте. Обратите внимание, что при использовании второго JS кода (чтобы одновременно мог быть открыт только один спойлер на страничке) первый код необходимо удалить.
Ответить

ksrl
0
# 2888
(22:40:23  09.12.2015 г.)

Добрый день, столкнулся с необходимость размещения ссылки на спойлер не в одном блоке с телом спойлера, как быть?
Ответить

Administrator
0
# 2889
(22:48:35  09.12.2015 г.)

Сергей
0
# 2894
(01:39:21  13.12.2015 г.)

Здравствуйте! Как можно сделать переход к содержимому внутри спойлера с другой страницы? Т.е. при обычном открытии страницы со спойлерами, все они должны быть закрыты, а при прямой адресации к скрытому содержимому внутри одного из спойлеров (по якорю), эта страница должна открываться с уже раскрытым этим спойлером.
Ответить

Administrator
0
# 2895
(15:12:08  13.12.2015 г.)

Как раз на днях сделал решение данного вопроса и выложил на нашем форуме.
Ответить

Сергей
0
# 2899
(05:47:41  14.12.2015 г.)

Благодарю за помощь! При таком варианте при обновлении страницы каждый раз происходит открытие спойлера, к которому была первоначальная адресация. Как сделать, чтобы после обновления страницы все спойлеры были закрыты? Также у меня не получилось корректно реализовать временное изменение (пока он открыт) стиля заголовка открытого спойлера.
Ответить

Мария
0
# 2983
(00:57:54  18.01.2016 г.)

Скажите, пожалуйста, а текст, скрытый под спойлером будет индексироваться поисковыми системами?
Ответить

Administrator
0
# 2987
(20:29:37  18.01.2016 г.)

Да, т.к. он присутствует в коде странички и загружается вместе с ней.
Ответить

Сергей
0
# 3011
(17:03:53  30.01.2016 г.)

Итак, мне было нужно, что открыв спойлер в нем можно "кликать" мышкой или копировать, а закрытие происходило бы по клику мышкой по любой области "сайта" кроме спойлера. Вот в принципе готовое решение:
$(document).ready(function(){
$(document).click( function(event){
if( $(event.target).closest('.spoiler_body').length ) return;
$('.spoiler_body').fadeOut("slow");
event.stopPropagation();
});
$('.spoiler_links').click(function(){
$(this).next('.spoiler_body').toggle('normal');
return false;
});
});
Ответить

Сергей
1
# 3076
(00:17:34  12.03.2016 г.)

А как сделать, чтобы спойлер закрывался через 1,5 секунды, или скрипт срабатывал через полторы сек.
Ответить

SergeyKNP
0
# 3143
(23:09:08  31.03.2016 г.)

Отличный скрипт! Спасибо!
Но есть небольшая проблема: Кликаем на спойлер №1 - открывается, текст под спойлером большой, возникает полоса прокрутки)...
Крутим колесо мыши вниз и кликаем на спойлер №2 (тоже большой текст под спойлером).
Спойлер №1 закрывается... Спойлер №2 открывается, но заголовок спойлера №2 уезжает наверх, занимая место, освободившееся от спойлера №1...
Вопрос: как после всех открытий/закрытий спойлеров заголовок открытого спойлера был виден хотя бы в самом верху странички?
Ответить

Administrator
0
# 3144
(23:45:56  31.03.2016 г.)

Как раз нечто подобное неделю назад делал для другой разновидности спойлера, но принцип такой же. Замените строчку:
$(this).next('.spoiler_body').toggle('normal');
на такие:
this_sp=$(this);
$(this).next('.spoiler_body').toggle('normal',function(){
$("html,body").animate({scrollTop:this_sp.offset().top},"slow");
});
Ответить

авпрне
0
# 3804
(07:55:43  29.03.2017 г.)

Крутим колесо мыши вниз и кликаем на спойлер №2 (тоже большой текст под спойлером).
Спойлер №1 закрывается... Спойлер №2 открывается, но заголовок спойлера №2 уезжает наверх, занимая место, освободившееся от спойлера №1...
Вопрос: как после всех открытий/закрытий спойлеров заголовок открытого спойлера был виден хотя бы в самом верху странички?
Ответить

SergeyKNP
0
# 3148
(15:31:27  01.04.2016 г.)

А нельзя ли сделать так, что бы заголовок открывшегося спойлера приклеился к верхней части экрана (типа "Приклеивающееся или прилипающее меню") и под ним прокрутка содержимого спойлера... И что бы по окончании содержимого прокрутка дальше вверх не крутилась бы...
Ответить

Administrator
0
# 3151
(20:00:27  01.04.2016 г.)

Может проще в тело спойлера встроить iframe заданных размеров и уже в нем прокручивать содержимое...
P.S. Другой Ваш вопрос с ответом был перенесен на форум.
Ответить

Иван
0
# 3269
(23:29:02  13.06.2016 г.)

Добрый день! Скрипт отличный. Все работает. Но хотелось бы добавить такой элемент, который визуально показывает, что спойлер открыт или закрыт. Например, + и - или ^ и такой же знак только вниз.
Ответить

Administrator
0
# 3271
(22:25:27  14.06.2016 г.)

Вот сделал "на скорую руку":
$(document).ready(function(){
$('.spoiler_links').append('<span class="state">&uarr;</span>');
$('.spoiler_links').click(function(){
if ($(this).next('.spoiler_body').css("display")!="none") $(this).children(".state").html("&uarr;");
else $(this).children(".state").html("&darr;");
$(this).next('.spoiler_body').toggle('normal');
return false;
});
});
Ответить

Андрей
0
# 3323
(22:27:36  10.07.2016 г.)

Здравствуйте! Отличный скрипт. Все работает, кроме закрытия спойлера.
Во-первых, при вставке строки <div class="spoiler_close">Закрыть спойлер</div>
в тело спойлера, строчка Закрыть спойлер ничем не выделяется при наведении на нее (ни как ссылка, ни как кнопка. Во-вторых, при нажатии на нее сам спойлер ведет себя непредсказуемо. То закроется, то сразу открывается один раз или 2 раза закрывается и все равно открывается обратно.
Скрипт тестировался без других скриптов, в него добавлено только закрытие одной ссылки при открытии другой. Как можно исправить ситуацию.
Ответить

Administrator
1
# 3324
(00:02:30  11.07.2016 г.)

Если Вы все сделали, как сказано в комментарии # 2378, то все должно работать.
Специально проверил - все работает как надо. Спойлер открывается и закрывается по несколько раз только в том случае, если Вы добавили JavaScript код более одного раза (надо всего один раз).
Чтобы как-то выделить ссылку для закрытия, добавьте в CSS стиль для .spoiler_close.
Ответить

Андрей
0
# 3325
(07:23:19  11.07.2016 г.)

Сделал как в посте №2378, но не работает. На форуме создал тему "Проблемы с скриптом "Собственный спойлер с плавным открытием и скрытием содержимого", где описал работу скрипта у меня. И кстати добавление в стиль строки .spoiler_close никак не выделяют ссылку. И главное ее нельзя почему-то отделить от основного текста, сдвинуть вправо-влево, цвет и шрифт изменить.
Ответить

Aranax
0
# 3471
(12:11:56  28.09.2016 г.)

<script type="text/javascript">
$(document).click(function(){ $('.spoiler_body').hide('normal'); });
$(document).ready(function(){
$('.spoiler_links').click(function(){
$(this).next('.spoiler_body').toggle('normal');
return false;
});
$('.spoiler_close').click(function(){
$(this).parent('.spoiler_body').toggle('normal');
return false;
});
});</script>
Тут и кнопка работает и закрывает по клику в спойлере.
Ответить

Андрей
0
# 3343
(08:46:51  24.07.2016 г.)

Добрый день!
Спойлер просто отличный, но при совмещении двух функций (развернуть/свернуть всё и закрытие спойлера кликом вне тела спойлера) перестают корректно работать кнопки свернуть всё и развернуть всё.
В чём может быть проблема?
Ответить

Administrator
0
# 3344
(13:04:44  24.07.2016 г.)

Проблема в том, что сначала обрабатывается JS код кнопки, а потом JS код клика вне тела спойлера.
Для устранения проблемы необходимо изменить код кнопок:
<input type="button" value="Закрыть все" id="close">
<input type="button" value="Открыть все" id="open">
А в JS код добавить:
$('#open').click(function() { $('.spoiler_body').show('normal'); return false; });
$('#close').click(function() { $('.spoiler_body').hide('normal'); return false; });
Ответить

Павел
0
# 3347
(09:58:12  28.07.2016 г.)

Добрый день!
Теперь некорректно работает функция «Закрыть спойлер кликом вне спойлера».
Она закрывает спойлер даже при клике в теле самого спойлера.
Ответить

Administrator
0
# 3349
(22:45:20  28.07.2016 г.)

$(document).click(function(e) {
if (!$('.spoiler_body').is(e.target)) {
$('.spoiler_body').hide('fast');
return false;
}
});
Ответить

Мария
0
# 3486
(17:23:36  03.10.2016 г.)

Доброго времени суток. Очень удобный скрипт :)
Но у меня вопрос по вашему комментарию #m1964, к вопросу о добавление :active для спойлера.
У вас пример сделан на примере, один спойлер открывается предыдущий закрывается.
А мне надо, когда можно открыть все спойлеры можно было открыть/закрыть.
Ответить

Administrator
1
# 3487
(20:50:47  03.10.2016 г.)

Если я Вас правильно понял, то просто удалите из скрипта из комментария #m1964 строчку:
$('.spoiler_body').hide('normal');
Ответить

Сергей
0
# 4264
(09:54:22  23.03.2018 г.)

В данном случае всё работает, но! При открытии нескольких спойлеров и закрытии хоть одного - закрываются все, что неприемлемо. Как сделать чтобы открывался и закрывался спойлер независимо? Спасибо.
Ответить

Юрии
0
# 3734
(09:18:43  18.02.2017 г.)

Почему при открытии (обновлении) страницы спойлер открывается? Нельзя ли сделать так, чтобы он открывался только при нажатии?
Ответить

Administrator
0
# 3735
(14:31:05  18.02.2017 г.)

Он не должен открываться т.к. в стиле указано: .spoiler_body { display: none; font-style: italic; }
Скопируйте код заново и протестируйте на пустой страничке.
Ответить

Павел
0
# 3818
(22:53:19  06.04.2017 г.)

Добрый день, подскажите что нужно прописать в коде, чтобы <div class="spoiler-title closed"> работал независимо от того где расположена раскрывающая область <div class="spoiler-body">.
Ответить

Administrator
0
# 3819
(18:19:56  07.04.2017 г.)

В сообщении # 3818 уже дана ссылка на нужный Вам скрипт - Спойлер с отдельным заголовком.
Ответить

Костя
0
# 4034
(02:06:46  15.07.2017 г.)

Как не извращался, не получилось - у меня навигация в статье происходит в виде:
<nav><strong id="menu">Содержание:</strong>
<a href="#quest1" class="linka">Задание 1</a>
</nav>
...
...
<div class="spoiler_links" id="quest1">название</div>
<div class="spoiler_body"><a href="#menu">перейти к меню</a>
текст</div>

В общем, нужно было, чтобы при нажатии на <a> закрывался спойлер и переходило к меню. Но я столкнулся с той проблемой, что после нажатия, он скачет к меню, но потом возвращается назад и закрывает спойлер.
Ответить

Scorpion
0
# 4199
(03:12:16  20.12.2017 г.)

Подскажите, пожалуйста, как сделать чтоб на одной кнопке работало всё закрытие и открытие спойлера? Допустим нажал "Открыть спойлер" и кнопка изменяет название на "Закрыть спойлер".
Ответить

Павел
0
# 4237
(01:43:14  30.01.2018 г.)

Привет, подскажите, пожалуйста, как сделать спойлер с динамической загрузкой содержимого, как это реализовать.
Ответить

Administrator
0
# 4240
(22:16:23  31.01.2018 г.)

Алексей
0
# 4255
(20:41:52  05.03.2018 г.)

Как сделать, чтобы при нажатии на спойлер, текст заголовка менял стиль (увеличивался)? то есть пока спойлер открыт - заголовок капсом, иначе обычным текстом.
Ответить

Евгений
0
# 4326
(00:36:19  25.07.2018 г.)

Здравствуйте, большое спасибо за отличный спойлер. Как установить значение скорости открытия и закрытия скрипта? Спасибо.
Ответить

Евгений
0
# 4328
(09:31:25  26.07.2018 г.)

С этим разобрался но возник другой вопрос. При сворачивании скрипта он подтягивает всю нижнюю часть контента, как зафиксировать кнопку "далее".
Ответить

Александр
0
# 4514
(16:32:10  02.10.2019 г.)

Спасибо все получилось! Только вот один момент в спойлере текст курсивный как это исправить?
Ответить

Administrator
0
# 4515
(16:56:15  02.10.2019 г.)

Удалите font-style: italic; из стиля .spoiler_body
Ответить

Александр
0
# 4516
(21:01:27  02.10.2019 г.)

Возникла сложность со спойлером. После удаления он начал сразу же сворачиваться я его раскрываю, а он сворачивается. Подскажите, пожалуйста, что это может быть?
Ответить

Administrator
0
# 4517
(22:25:38  02.10.2019 г.)

Видимо удалили что-то лишнее. Скопируйте код заново и удалите из CSS только font-style: italic;
Ответить

Игорь
0
# 4679
(23:32:39  10.07.2020 г.)

Здравствуйте! Скрипт ТОП! Подскажите пожалуйста, как разместить кнопки горизонтально, и чтобы текст открывался по левой части страницы, и открывая второй чтобы открывался вместо того плавно, но чтоб кнопки были горизонтально.
Ответить

Administrator
0
# 4680
(14:50:54  11.07.2020 г.)

Ответить

Закрыть
Ваше имя:
303 + 8 =
Добавить комментарий:
Ваше имя:
303 + 8 =

Перед публикацией все комментарии проходят обязательную модерацию!

Если Вы хотите задать какой-либо вопрос, то сделайте это на нашем форуме.
Таким образом, Вы сможете быстрее получить ответ на интересующий Вас вопрос.
Посетителей онлайн: 8

Какую CMS для сайта Вы предпочитаете?