Спойлер с динамической подгрузкой
Пример спойлера
https://jsfiddle.net/7tos445e/ Мне нужно почти это же, но нужно сокрытие показанного. Т. е. в любой один момент времени или спойлеры вообще не раскрыты, или должен быть раскрыт только один спойлер. Если один спойлер был раскрыт, и произошел клик, активирующий раскрытие второго спойлера, то сначала показываемый спойлер должен скрыться, а после этого должен раскрыться активированный. Покажите, пожалуйста, как это сделать. |
|
Спасибо.
Если всё это можно это организовать без задержек, было бы очень хорошо. |
Цитата:
|
рони,
Цитата:
|
daslex,
вы не пробовали сделать так: форум - поиск - открывашка - и выбрать из 300 вариантов |
Dilettante_Pro,
Вы правы. Там ни fast, ни пустые скобки нулевой задержки не дают. Как показано хорошо, но, если есть возможность задержку ту (в лучшем случае 400мс, насколько я понял) в 0мс свести, то хотелось бы такую возможность использовать. На а нету, то нету, значит. |
daslex,
меняйте класс если плавность не нужна |
daslex,
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> .spoiler_body { display: none; } .active{ display: block; } </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script> $(function() { $(".spoiler_head").click(function() { var a = $(this).next(".spoiler_body"); $(".spoiler_body").not(a.toggleClass("active")).removeClass("active") }) }); </script> </head> <body> <div class="spoiler_head">Спойлер №1 (кликните для открытия/закрытия)</div> <div class="spoiler_body">Текст спойлера 1</div> <div class="spoiler_head">Спойлер №2 (кликните для открытия/закрытия)</div> <div class="spoiler_body">Текст спойлера 2</div> <div class="spoiler_head">Спойлер №3 (кликните для открытия/закрытия)</div> <div class="spoiler_body">Текст спойлера 3</div> <div class="spoiler_head">Спойлер №4 (кликните для открытия/закрытия)</div> <div class="spoiler_body">Текст спойлера 4</div> </body> </html> |
рони,
Спасибо! То, что нужно. |
Возможно ли реализовать эту задачу не сокрытием, а стиранием: то, что скрывается в спойлер - оно должно быть стёрто, а открытие спойлера должно выполнять подгрузку к спойлеру.
Если я загружаю страницу, то загружаю в неё спойлеры. Всё, что в спойлерах, загружаться на страницу не должно. Загрузка должна происходить только по клику на спойлер. Остальное всё, как в решении выше. На странице должно быть не больше одного "загруженного спойлера". Под "загруженным спойлером" понимается раскрытый спойлер, в который догружена информация. Во всех закрытых спойлерах информация должна быть стерта. Закрытие спойлера должно быть эквивалентно закрытию окна в Windows, закрытию вкладки в браузере и т. п. Сам спойлер не должен разрушаться, должно разрушаться только то, что под ним. Технология, возможно, не jquery, я не знаю в какую область обращаться. |
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> .spoiler_body { display: none; } .active{ display: block; } </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script> $(function() { $(".spoiler_head").click(function() { $(".spoiler_body.active").html(''); var a = $(this).next(".spoiler_body"); $(".spoiler_body").not(a.toggleClass("active")).removeClass("active") }) }); }); </script> </head> <body> <div class="spoiler_head">Спойлер №1 (кликните для открытия/закрытия)</div> <div class="spoiler_body"><script>alert('1');</script></div> <div class="spoiler_head">Спойлер №2 (кликните для открытия/закрытия)</div> <div class="spoiler_body"><script>alert('2');</script></div> <div class="spoiler_head">Спойлер №3 (кликните для открытия/закрытия)</div> <div class="spoiler_body">Текст спойлера 3</div> <div class="spoiler_head">Спойлер №4 (кликните для открытия/закрытия)</div> <div class="spoiler_body">Текст спойлера 4</div> </body> </html> Скрипты. Это из-за скриптов у меня вопрос возникает. Скрипт должен выполнятся, если спойлер раскрывается. Каждый раз при раскрытии спойлера, находящийся в нем скрипт должен срабатывать. Скрипты других спойлеров работать не должны - это нелогично, это накладно. При первой загрузке страницы скрипты выполнятся не должны. Только при раскрытии спойлера, только скрипт спойлера, многократно. |
daslex,
вам скорее всего в раздел работа, но возможно и это не поможет ... сложно вас понять ... |
Может быть в тот раздел. Но если я тут объяснить ничего не могу, мой потенциальный исполнитель с ума сойти может от моих жалких объяснений. Заказчики, конечно, разные бывают.
Я объясню, постараюсь очень в объяснении. У меня под спойлерами скрипты. Раскрытие спойлера = запуск скрипта. При первой загрузке страницы скрипты не должны срабатывать: 1000 спойлеров, например, под каждым 5 скриптов ==> 4995 ненужных срабатываний при открытии страницы. Это хорошо? Сейчас сложный мне участок для моего всем объяснения: Больше чем один спойлер на странице раскрыто быть не должно: или тела спойлеров вообще скрыты, или один спойлер раскрыт. Скрипт должен выполнятся только один (на 5 скриптов для одного спойлера, соответственно, 5), выполнятся должны только у раскрытого спойлера. Каждое новое раскрытие спойлера - это сигнал скрипту к выполнению: раскрытие спойлера запускает скрипт. Скрипты - они где-то в текстах, скрытых спойлером. Я не мог предвидеть проблему со скриптами, когда рони мне показал решение, полностью отвечающее моему запросу. У меня знания на нуле. Нельзя всего предвидеть, увы. Спустя некоторое время после показанного, я обратил внимание на срабатывание скриптов. Если есть возможность побороть такую проблему, хотелось бы её использовать. |
daslex,
Никто так не верстает страницы. Скрипты не размещаются в html ( за редким исключением, но этого следует избегать - это дурной стиль, ведущий ко множеству проблем), а размещаются в отдельных файлах или в головном модуле в виде функций. И выполняются они не при загрузке, а в нужный момент. Вы можете в обработчик клика по открытию спойлера вставить вызов нужных для данного спойлера функций с нужными данными. Это азы взаимодействия html и js - и никаких проблем, о которых вы пишете |
Какая разница, где они размещаются, если в конечном счёте - это просто текст в HTML странице.
Я не про то, что выносить не надо, а к тому, что для тестового примера удобно скрипт не выносить. Определённый момент - нажатие спойлера. |
Dilettante_Pro,
В конкретном примере в какое-то неопределённое время загрузки. Можно немного и легко поменять, будет сразу после загрузки. А мне надо, чтобы только по спойлеру. И при каждом нажатии на спойлер. |
Часовой пояс GMT +3, время: 11:35. |