Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.01.2016, 21:09
Аспирант
Отправить личное сообщение для snovapavel Посмотреть профиль Найти все сообщения от snovapavel
 
Регистрация: 08.03.2015
Сообщений: 78

Доработать слайдер
Добрый день! С Новым Годом, Вас!

Доделываю спойлер здесь:

https://jsfiddle.net/y2kLhqpo/

Мне необходимо реализовать гибкое изменение заголовков спойлера. Чтобы до открытия спойлера, отображался текст, который идёт до символа pipe (|) - например «Показать изображения». А после открытия, текст, который идёт после символа pipe (|) - например «Скрыть все изображения».

Так же нужно предусмотреть вариант, когда в заголовке идёт текст без символа pipe (|). Тогда один текст и до открытия и после.

Я уже даже накидал регулярку, чтобы не утруждать наших уважаемых профессоров (очень уж я регулярки люблю):

На открытие:
    .replace(/\<div class=\"titleSpoiler\"\>(.*?)( |\t)*\|(.*?)\<\/div\>/gm, "$1"); // Здесь будет находиться текст открытия спойлера
На закрытие:
    .replace(/\<div class=\"titleSpoiler\"\>(.*?)( |\t)*\|(.*?)\<\/div\>/gm, "$3"); // Здесь будет находиться текст закрытия спойлера


Но, пока не знаю как её сюда вписать...
Ответить с цитированием
  #2 (permalink)  
Старый 24.01.2016, 21:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Открывашка 250 открытие/закрытие блоков со сменой текста на кнопке
snovapavel,
Открывашка 250 открытие/закрытие блоков со сменой текста на кнопке. вам повезло юбилейный номер. это шоу будет вечным
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
  <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.js"></script>
  <style type="text/css">
.titleSpoiler {
    font-weight: bold;
    cursor: pointer;
}
.bodySpoiler {
    display: none;
    font-style: italic;
}
.collapseSpoiler {
	margin: 16px 0 0 0;
	color: blue;
    cursor: pointer;
}
  </style>
<script>
$(function() {
    $(".titleSpoiler").each(function(g, a) {
        function e(c) {
            c.preventDefault();
            c = +d.is(":hidden");
            d.slideToggle(200);
            a.text(b[c])
        }
        a = $(a);
        var b = $.trim(a.text()).split("|");
        b.push(b[0]);
        var d = a.next(".bodySpoiler"),
            f = $(".collapseSpoiler", d);
        a.text(b[0]);
        a.click(e);
        f.click(e)
    })
});
</script>


</head>

<body>
<div class="titleSpoiler">Показать изображения | Скрыть все изображения</div>
<div class="bodySpoiler">

    Текст под спойлером
    <br> имеет класс spoiler_body.
    <br> Для придания стиля данному тексту
    <br> просто добавьте еще один класс.

<div class="collapseSpoiler">Свернуть спойлер</div>
</div>
<br>
<div class="titleSpoiler">Показать цитату | Скрыть цитирование автора</div>
<div class="bodySpoiler">

    А это уже текст второго спойлера!
    <br> Данный спойлер также позволяет скрывать
    <br> излишнее на сайте!

<div class="collapseSpoiler">Свернуть спойлер</div>
</div>
<br>
<div class="titleSpoiler">один текст и до открытия и после</div>
<div class="bodySpoiler">

    А это уже текст второго спойлера!
    <br> Данный спойлер также позволяет скрывать
    <br> излишнее на сайте!

<div class="collapseSpoiler">Свернуть спойлер</div>
</div>
</body>
</html>

Последний раз редактировалось рони, 10.10.2017 в 09:53.
Ответить с цитированием
  #3 (permalink)  
Старый 24.01.2016, 21:51
Аспирант
Отправить личное сообщение для snovapavel Посмотреть профиль Найти все сообщения от snovapavel
 
Регистрация: 08.03.2015
Сообщений: 78

Уважаемый (мною) РОНИ!

Уж от вас я ждал конструктивного ответа. Я изучаю JavaScript и через месяц сам буду отвечать на свои вопросы А сейчас у меня повис проект. Поэтому, если хотите, можете помочь мне. Я буду очень вам признателен.
Ответить с цитированием
  #4 (permalink)  
Старый 24.01.2016, 22:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

snovapavel,
посмотрите пост 2, жаль на форуме нет меток, этот пост тоже канет в лету и будет 251
Ответить с цитированием
  #5 (permalink)  
Старый 11.10.2017, 03:00
Новичок на форуме
Отправить личное сообщение для mikeac Посмотреть профиль Найти все сообщения от mikeac
 
Регистрация: 10.10.2017
Сообщений: 3

рони,
Благодарю, почти то, что нужно!
А как прикрутить "авто-гармошку", чтобы по клику на один из заголовков предыдущие закрывались автоматом, если не затруднит, подскажите?
Ответить с цитированием
  #6 (permalink)  
Старый 11.10.2017, 03:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

mikeac,
$(function() {
    $(".titleSpoiler").each(function(g, a) {
        function e(c) {
            c.preventDefault();
            c = +d.is(":hidden");
            var el = $(".collapseSpoiler").not(f).filter(":visible");
            el.length && el.click();
            d.slideToggle(200);
            a.text(b[c])
        }
        a = $(a);
        var b = $.trim(a.text()).split("|");
        b.push(b[0]);
        var d = a.next(".bodySpoiler"),
            f = $(".collapseSpoiler", d);
        a.text(b[0]);
        a.click(e);
        f.click(e)
    })
});
Ответить с цитированием
  #7 (permalink)  
Старый 11.10.2017, 03:27
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

mikeac,
или так
$(function() {
    $(".titleSpoiler").each(function(g, a) {
        function e(c) {
            c.preventDefault();
            c = +d.is(":hidden");
            var el = $(".bodySpoiler:visible").not(d).prev();
            el.length && el.click();
            d.slideToggle(200);
            a.text(b[c])
        }
        a = $(a);
        var b = $.trim(a.text()).split("|");
        b.push(b[0]);
        var d = a.next(".bodySpoiler"),
            f = $(".collapseSpoiler", d);
        a.text(b[0]);
        a.click(e);
        f.click(e)
    })
});
Ответить с цитированием
  #8 (permalink)  
Старый 11.10.2017, 20:18
Новичок на форуме
Отправить личное сообщение для mikeac Посмотреть профиль Найти все сообщения от mikeac
 
Регистрация: 10.10.2017
Сообщений: 3

рони,
Отлично, спасибо!
И, если можно, еще одна задача - прикрутить ко всей этой конструкции отдельную строку "развернуть/свернуть всЁ", подскажите?
Ответить с цитированием
  #9 (permalink)  
Старый 11.10.2017, 20:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Сообщение от mikeac
подскажите?
нет
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интересный слайдер (ротатор) TRIGUN Общие вопросы Javascript 2 26.11.2015 18:37
Нужно сделать слайдер контента OgecuT Элементы интерфейса 2 23.07.2014 14:31
Связать ползунковый слайдер и аккордеон... All_ex74 Элементы интерфейса 1 31.05.2013 13:20
jquery слайдер, анимация при переключении вкладки KiTaeZa Events/DOM/Window 1 05.09.2011 20:52
jQuery UI Slider - как синхронизировать слайдер со значнием? frightened jQuery 0 24.07.2011 00:19