Текущее время: 29 мар 2024, 00:09


Форум временно переведен в режим "Только для чтения". По вопросам технической поддержки, обращайтесь, пожалуйста на admin@getbb.ru

 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Правила форума


Различные ББкоды, которые вы можете использовать на своем форуме.
Если вы нашли интересный ББкод, можете поделиться им со всеми, но пожалуйста помните: один ББкод - одна тема.



Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: спойлер в спойлере
СообщениеДобавлено: 25 май 2013, 03:47 
Разбирающийся
Аватара пользователя

Зарегистрирован: 03 мар 2009, 02:51
Сообщений: 162
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
решил написать в этот раздел т.к. это все таки bbcode и если решение будет найдено, то здесь это будет легче найти.

оч. нужна помощь кто хорошо шарит в js

в head
Текст:
Код:
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script type="text/JavaScript" src="../adress_do_faila/jquery-spoiler_control.js"></script>
<script type="text/JavaScript">
$(document).ready(function(){
BspoilerControl();
});
</script>

содержимое jquery-spoiler_control.js
Текст:
Код:
function BspoilerControl(){
            //Скрываем все спойлеры
            $("div[name=\"spoiler\"]").hide();
            //Всем кнопкам спойлеров задаем текст и картинку (удобно для многоязыковых интерфейсов)
            $("p[name=\"spoilerbutton\"]").html("<img src=\"http://wlife.spb.ru/images/icons/smile/info.gif\">&nbsp;Показать");
            //Перебераем все кнопки спойлеров на странице
            $("p[name=\"spoilerbutton\"]").each(function(){
                //Если прямо перед кнопкой спойлера стоит заголовок
                if($(this).prev(this).get(0).tagName == "H1" || $(this).prev(this).get(0).tagName == "H2" || $(this).prev(this).get(0).tagName == "H3"){
                    //Текст из заголовка переносим в кнопку, а сам заголовок убераем
                    var NewSpoilerButton = "<div name=\"spoilerbutton\" class=\"advSpoilerHeader\"><p> <span><img src=\"http://wlife.spb.ru/images/ranks/womanlife_listbb_ru/razvernyt.png\"></span><b>"+$(this).prev(this).html()+"</b></p></div>";
                    $(this).prev(this).replaceWith("");
                    $(this).replaceWith(NewSpoilerButton);
                    //В результате кнопки спойлеров с заголовками становятся div-ами. Теперь на странице может быть 2 типа кнопок спойлеров p и div типа
                }
            });
            //Для всех div кнопок обрабатываем клик
            $("div[name=\"spoilerbutton\"]").click(function () {
                //Если спойлер видим. Дословно: если свойство display для первого DOM брата/сестры равно "block" (т.е. видим в контексте применяемого эффекта slide)
                if($(this).next(this).css("display")=="block"){
                    //Записываем "показать>>" в span, который ребенок p, который ребенок нашей кнопки this. Потом поменяем его на "<<скрыть"
                    $(this).children("p").children("span").html("<img src=\"http://wlife.spb.ru/images/ranks/womanlife_listbb_ru/razvernyt.png\">");
                    //Сворачиваем открытый спойлер
                    $(this).next(this).slideUp("normal");
                } else {
                    //Если спойлер не открыт, то он закрыт и соответственно меняем надпись и разворачиваем спойлер
                    $(this).children("p").children("span").html("<img src=\"http://wlife.spb.ru/images/ranks/womanlife_listbb_ru/svernyt.png\">");               
                    $(this).next(this).slideDown("normal");
                }
              return false;
             });       
            //Теперь клик для всех p-кнопок
            $("p[name=\"spoilerbutton\"]").click(function () {
                //По тому же принципу, что до этого, только проще
                if($(this).next(this).css("display")=="block"){
                    $(this).next(this).slideUp("normal");
                    $(this).html("<img src=\"http://wlife.spb.ru/images/icons/smile/info.gif\">&nbsp;Показать");
                } else {
                    $(this).next(this).slideDown("normal");
                    $(this).html("<img src=\"http://wlife.spb.ru/images/icons/smile/info.gif\">&nbsp;Скрыть");
                }
              return false;
             });
        }</script>
<script type="text/JavaScript">
$(document).ready(function(){
BspoilerControl();
});

css
Текст:
Код:
div.spoiler{
    border: 1px solid #d5d5d5;
    background-color: #fafafa;
    margin: 7px;
    padding: 7px;
}
div.advSpoilerHeader{
    margin-left: 7px;
    margin-right: 7px;
    margin-bottom: -8px;
    border-bottom: 1px solid #d5d5d5;
    width: 95%;
    cursor: pointer;
}

замена html
Текст:
Код:
<h2>{TEXT1}(заголовок спойлера</h2>
<p name="spoilerbutton" style="cursor:pointer"></p><DIV name="spoiler" class="spoiler">
{TEXT}(содержимое спойлера)
</div>


и все бы супер но не работает..
хотя на локалхосте (в апаче) работает как часы правда
в обычной html страничке (http://localhost/jqspoiler.html)

Добавлено спустя 19 минут 59 секунд

зы все двойные кавычки которые заэкранированы в jquery-spoiler_control.js, в оригинальном скрипте одиночные. заэкранировать пришлось потому что движок форума в блоке "замена html" автоматом превращает одиночные кавычки в двойные (в оригинале в этом блоке везде одиночные кавычки) и скрипт соответственно не видит блока замены html

_________________
Яндекс толока форум


Не в сети
 Профиль WWW Cпасибо сказано  
 
 Заголовок сообщения: Re: спойлер в спойлере
СообщениеДобавлено: 27 май 2013, 01:47 
Универсальный Гений
Аватара пользователя

Зарегистрирован: 09 фев 2009, 15:55
Сообщений: 1732
Очков репутации: 57

Добавить очки репутацииУменьшить очки репутации
Пол: Мужской
foxss
не будет работать как ббкод спойлер в спойлере
только придумывать костыли ИБО
структура ббкода
[spoil] открывает ббкод
[/spoil] закрывает
теперь берем конструкцию спойлер в спойлере, то бишь ббкод в ббкоде

[spoil][spoil][/spoil][/spoil]

но движок форума отработает это не как ббкод в ббкоде, как только дивжок увидел первый закрывающий ббкод, ему уже не важно что это было в ббкоде
[spoil][spoil][/spoil][/spoil]
Синим выделил, то как расценивает движок эту конструкцию... красное то что будет в спойлере. черное то что будет за спойлером

для того что бы сделать спойлер в спойлере надо что бы ббкоды были разные
к примеру создайте ббкоды с одинаковой заменой хтмл
[spoil1]{TEXT}[/spoil1]
[spoil2]{TEXT}[/spoil2]
[spoil3]{TEXT}[/spoil3]
123 уровни вложения в спойлер

[spoil1][spoil2][spoil3]{TEXT}[/spoil3][/spoil2][/spoil1]
будет тройной спойлер (спойлер в спойлере и в спойлере)

Кстати :twisted: цитата вложенная в читату работает на Phpbb3
Цитата:
1
Цитата:
2
Цитата:
3


Не в сети
 Профиль Cпасибо сказано  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

 

Часовой пояс: UTC + 3 часа [ Летнее время ]



 Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

 
cron