Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 28.01.2017, 09:22
Кандидат Javascript-наук
Отправить личное сообщение для daslex Посмотреть профиль Найти все сообщения от daslex
 
Регистрация: 17.04.2015
Сообщений: 125

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

Если я загружаю страницу, то загружаю в неё спойлеры. Всё, что в спойлерах, загружаться на страницу не должно. Загрузка должна происходить только по клику на спойлер. Остальное всё, как в решении выше. На странице должно быть не больше одного "загруженного спойлера".

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

Технология, возможно, не jquery, я не знаю в какую область обращаться.

Последний раз редактировалось daslex, 28.01.2017 в 09:25.
Ответить с цитированием
  #12 (permalink)  
Старый 28.01.2017, 19:31
Кандидат Javascript-наук
Отправить личное сообщение для daslex Посмотреть профиль Найти все сообщения от daslex
 
Регистрация: 17.04.2015
Сообщений: 125

<!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>


Скрипты. Это из-за скриптов у меня вопрос возникает. Скрипт должен выполнятся, если спойлер раскрывается. Каждый раз при раскрытии спойлера, находящийся в нем скрипт должен срабатывать. Скрипты других спойлеров работать не должны - это нелогично, это накладно.

При первой загрузке страницы скрипты выполнятся не должны. Только при раскрытии спойлера, только скрипт спойлера, многократно.
Ответить с цитированием
  #13 (permalink)  
Старый 28.01.2017, 19:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,133

daslex,
вам скорее всего в раздел работа, но возможно и это не поможет ... сложно вас понять ...
Ответить с цитированием
  #14 (permalink)  
Старый 28.01.2017, 20:36
Кандидат Javascript-наук
Отправить личное сообщение для daslex Посмотреть профиль Найти все сообщения от daslex
 
Регистрация: 17.04.2015
Сообщений: 125

Может быть в тот раздел. Но если я тут объяснить ничего не могу, мой потенциальный исполнитель с ума сойти может от моих жалких объяснений. Заказчики, конечно, разные бывают.

Я объясню, постараюсь очень в объяснении.
У меня под спойлерами скрипты.
Раскрытие спойлера = запуск скрипта.
При первой загрузке страницы скрипты не должны срабатывать: 1000 спойлеров, например, под каждым 5 скриптов ==> 4995 ненужных срабатываний при открытии страницы. Это хорошо?

Сейчас сложный мне участок для моего всем объяснения:
Больше чем один спойлер на странице раскрыто быть не должно: или тела спойлеров вообще скрыты, или один спойлер раскрыт. Скрипт должен выполнятся только один (на 5 скриптов для одного спойлера, соответственно, 5), выполнятся должны только у раскрытого спойлера. Каждое новое раскрытие спойлера - это сигнал скрипту к выполнению: раскрытие спойлера запускает скрипт.
Скрипты - они где-то в текстах, скрытых спойлером.

Я не мог предвидеть проблему со скриптами, когда рони мне показал решение, полностью отвечающее моему запросу. У меня знания на нуле. Нельзя всего предвидеть, увы. Спустя некоторое время после показанного, я обратил внимание на срабатывание скриптов. Если есть возможность побороть такую проблему, хотелось бы её использовать.

Последний раз редактировалось daslex, 28.01.2017 в 20:40.
Ответить с цитированием
  #15 (permalink)  
Старый 28.01.2017, 21:04
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

daslex,
Никто так не верстает страницы. Скрипты не размещаются в html ( за редким исключением, но этого следует избегать - это дурной стиль, ведущий ко множеству проблем), а размещаются в отдельных файлах или в головном модуле в виде функций. И выполняются они не при загрузке, а в нужный момент.
Вы можете в обработчик клика по открытию спойлера вставить вызов нужных для данного спойлера функций с нужными данными.
Это азы взаимодействия html и js - и никаких проблем, о которых вы пишете
Ответить с цитированием
  #16 (permalink)  
Старый 28.01.2017, 21:19
Кандидат Javascript-наук
Отправить личное сообщение для daslex Посмотреть профиль Найти все сообщения от daslex
 
Регистрация: 17.04.2015
Сообщений: 125

Какая разница, где они размещаются, если в конечном счёте - это просто текст в HTML странице.

Я не про то, что выносить не надо, а к тому, что для тестового примера удобно скрипт не выносить.

Определённый момент - нажатие спойлера.
Ответить с цитированием
  #17 (permalink)  
Старый 28.01.2017, 21:21
Кандидат Javascript-наук
Отправить личное сообщение для daslex Посмотреть профиль Найти все сообщения от daslex
 
Регистрация: 17.04.2015
Сообщений: 125

Dilettante_Pro,
В конкретном примере в какое-то неопределённое время загрузки.
Можно немного и легко поменять, будет сразу после загрузки.

А мне надо, чтобы только по спойлеру. И при каждом нажатии на спойлер.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Bootstrap спойлер SpiriKoN Элементы интерфейса 3 12.04.2016 20:15
Спойлер - сворачивать предыдущий спойлер при открытии нового maxmusicmax Общие вопросы Javascript 6 02.06.2015 22:50
спойлер для сайта Awerin Работа 2 01.06.2015 11:53
Спойлер в G-Chrome p1653v Opera, Safari и др. 1 06.06.2011 17:44
GetElementById не хочет работать в динамической форме Игорёk Events/DOM/Window 8 23.06.2009 13:27