Как создать ссылку на содержимое вкладки «Аккордеона»?

Добрый день. Вопрос в следующем:
Для удобства представления информации решил в статье использовать "аккордеон" вертикальный. Имеется код такого вида:
<section class="ac-container">
<div>
<input id="ac-1" name="accordion-1" type="radio" />
<label for="ac-1">Вкладка 1</label>
<article class="ac-small">
<p>Содержимое 1</p>
</article>
</div>
<div>
<input id="ac-2" name="accordion-1" type="radio" />
<label for="ac-2">Вкладка 2</label>
<article class="ac-medium">
<p>Содержимое 2</p>
</article>
</div>
</section>

Появилась необходимость сделать ссылки на сторонней странице на содержимое вкладок аккордеона. Как выйти из ситуации? Проставление якорей не открывает содержимое. В javascript не силен.
  • Вопрос задан
  • 4649 просмотров
Решения вопроса 2
iiil
@iiil
Инженер и вэб-дизайнер, рисую.
iiil.name/ak.html
iiil.name/ak.html#ac-1
iiil.name/ak.html#ac-2
iiil.name/ak.html#ac-3
Добавьте script перед закрывающим тегом body. Видимо в этом и была ошибка, так как ищем элемент до того, как он сформирован. И я добавил проверку на наличие элемента, чтобы когда не передается хэш или он не относится к аккордеону - не выдавало ошибку.
Перейдите по 4 ссылке, радио-кнопка с id="ac-3" не будет checked.
<script>
 var hash = location.hash.substr(1),
     input = document.getElementById(hash);
 if (input && input.name == "accordion-1") {
    input.checked = true;
 }
</script>
Ответ написан
Sander_Li
@Sander_Li
Backend developer
Как я понял делал из этой статьи. Тогда что-то вроде того может подойти
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>

$(function(){
$(location.hash).click();
      $(window).hashchange(function(){
      $(location.hash).click();
});
});


При смене хеша, будет происходить клик на нужную табу. hash должен быть равен id табы
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
iiil
@iiil
Инженер и вэб-дизайнер, рисую.
str = location.hash;
var hash = str.substr(1);
document.getElementById(hash).checked = true;

Не нужно делать клик на элемент. Аккордеон работает по radio-кнопкам. Просто добавьте в тег script указанный код и все будет работать, не нужно грузить ради этого jquery.
Ответ написан
iiil
@iiil
Инженер и вэб-дизайнер, рисую.
Приложите не только разметку, но и js аккордеона и стили.
Я так понимаю, что у Вас блоки аккордеона скрыты и поэтому на них ссылка не работает. Выйти из ситуации я бы предложит так: при загрузке страницы на уровне сервера или на клиенте обрабатывать url, искать там id и в аккордеона открывать этот блок.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы