Раскрывающийся и сворачивающийся по клику div
Добрый вечер! Прошу найти решение задачи.
Есть несколько div, при клике на которые разворачивается скрытый текст: <div class="view-source"><a href="#></a> <div class="hide">Спрятанный текст</div> </div> <div class="view-source"><a href="#></a> <div class="hide">Спрятанный текст</div> </div> <div class="view-source"><a href="#></a> <div class="hide">Спрятанный текст</div> </div>
$(document).ready(function(){
$('.view-source .hide').hide();
$('.view-source a').toggle(
function(){
$(this).siblings('.hide').stop(false, true).slideDown(500);
},
function(){
$(this).siblings('.hide').stop(false, true).slideUp(500);
}
);
});
Как сделать так, чтобы развернутый div сворачивался при клике на любой из других div'ов - оберток (с классом view-source)? То есть, на один момент времени должен быть открыт только 1 скрытый div. |
Кавычки у атрибутов надо закрывать...
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
</head>
<body>
<div class="view-source">
<a href="#">111</a>
<div class="hide">Спрятанный текст</div>
</div>
<div class="view-source">
<a href="#">222</a>
<div class="hide">Спрятанный текст</div>
</div>
<div class="view-source">
<a href="#">333</a>
<div class="hide">Спрятанный текст</div>
</div>
<script>
$(document).ready(function(){
$('.view-source .hide').hide();
$('.view-source a').on('click', function() {
$('.view-source .hide').slideUp(500);
$(this).parent().find('.hide').slideDown(500);
});
});
</script>
</body>
</html>
|
Спасибо! :)
|
jsnb,
нажмите 111 второй раз или поместите дивы в конец длинной страницы ... Вариант
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
</head>
<body>
<div class="view-source">
<a href="#">111</a>
<div class="hide">Спрятанный текст</div>
</div>
<div class="view-source">
<a href="#">222</a>
<div class="hide">Спрятанный текст</div>
</div>
<div class="view-source">
<a href="#">333</a>
<div class="hide">Спрятанный текст</div>
</div>
<script>
$(function(){
$('.view-source .hide').hide();
$a = $('.view-source a');
$a.on('click', function(event) {
event.preventDefault();
$a.not(this).next().slideUp(500);
$(this).next().slideToggle(500);
});
});
</script>
</body>
</html>
|
Цитата:
|
Перекидывает на самый верх сайта
Здравствуйте, сделал отдельно все работает. Переношу на сайт, при нажатии выбрасывает на верх страницы и div не раскрывается. Думаю дело в ссылке "#" может можно чем-то заменить.Спасибо!
|
Александр77,
может забыли function(event) { event.preventDefault(); добавить? |
не работает код
проблема в том что у меня на этой странице подключен слайдер и когда я подключаю библиотеку слайдер перестает работать
|
Александр77,
ненадо грузить много версий jquery достаточно одной |
я их заменил и слайдер перестал работать? с чем это может быть связанно
|
Александр77,
c тем что слайдер устарел и не работает с новой версией jquery , так не ставьте новую оставьте с которой работал слайдер. |
рони,
привет помоги со скриптом |
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
</head>
<body>
<div class="view-source">
<a href="#">111</a>
<div class="hide">Спрятанный текст</div>
</div>
<div class="view-source">
<a href="#">222</a>
<div class="hide">Спрятанный текст</div>
</div>
<div class="view-source">
<a href="#">333</a>
<div class="hide">Спрятанный текст</div>
</div>
<script>
$(function(){
$('.view-source .hide').hide();
$a = $('.view-source a');
$a.on('click', function(event) {
event.preventDefault();
$a.not(this).next().slideUp(500);
$(this).next().slideToggle(500);
});
});
</script>
</body>
</html>
скрипт твой дело в том что работает он не много не так как надо а именно мне на до чтобы внутри открывающего блока была ссылка а когда я ее добавляю блок закрывается |
Цитата:
$a = $('.view-source > a'); добавьте красное |
спасибо
|
Спасибо, скажите, а как сделать, чтобы первый пунт был развернут по умолчани при загрузке страницы?
|
Ust,
$('.view-source .hide').hide().eq(0).show(); |
Ребята, привет. Спасибо за подробное решение, поставил себе все работает, но хотелось бы уточнить. Можно ли сделать так, чтобы при обновлении страницы блок не раскрывался? А то сейчас, когда обновляешь страницу или заходишь по новой, блок сначала раскрывается, а потом закрывается как и должно быть. Буду рад помощи. Спасибо!:help:
|
Paul12345, в css добавить
.view-source .hide{
display: none;
}
из js убрать |
Цитата:
|
Рони, возник еще вопрос, помогите, пожалуйста, какой должна быть структура кода и js, чтобы список был в одну линию, а раскрывался контент каждого элемента в одном диве под списком.
|
|
Цитата:
|
Использовал вот такую конструкцию:
<!-- Tab -->
<span class='tab'>Ссылка 1</span>
<span class='tab'>Ссылка 2</span>
<span class='tab'>Ссылка 3</span>
<div class="tab-content">
<div class="c">Текст 1</div>
<div class="c none">Текст 2</div>
<div class="c none">Текст 3</div>
</div>
<!-- End Tab -->
<script type="text/javascript">
var tabs = document.querySelectorAll(".tab");
var con = document.querySelectorAll(".c");
var temp = con[0];
[].forEach.call(tabs, function(item, i) {
item.addEventListener("click", function() {
temp.classList.add("none");
temp = con[i];
temp.classList.remove("none")
})
});
</script>
Подскажите, как можно задать отдельный фон активной вкладке? Через CSS не получается. Можно потом перенести сообщение в другую ветку, если здесь не в тему. Спасибо! |
Цитата:
|
Я наверно не правильно выразился, фон самого таба
|
Paul12345,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.none {
display: none;
}
.active {
background-color: hsla(240, 100%, 40%, 1);
color: hsla(0, 0%, 100%, 1);
}
</style>
</head>
<body>
<!-- Tab -->
<span class='tab active'>Ссылка 1</span>
<span class='tab'>Ссылка 2</span>
<span class='tab'>Ссылка 3</span>
<div class="tab-content">
<div class="c">Текст 1</div>
<div class="c none">Текст 2</div>
<div class="c none">Текст 3</div>
</div>
<!-- End Tab -->
<script type="text/javascript">
var tabs = document.querySelectorAll(".tab");
var con = document.querySelectorAll(".c");
var temp = 0;
[].forEach.call(tabs, function(item, i) {
item.addEventListener("click", function() {
item.classList.add("active");
tabs[temp].classList.remove("active")
con[temp].classList.add("none");
temp = i;
con[temp].classList.remove("none")
})
});
</script>
</body>
</html>
|
Да, именно, спасибо огромное!!!
|
Цитата:
|
открывашка и смена текста на кнопке
Batyabest,
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
.view-source .hide{
display: none;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
</head>
<body>
<div class="view-source">
<a href="#">развернуть </a>
<div class="hide">Спрятанный текст</div>
</div>
<div class="view-source">
<a href="#">развернуть </a>
<div class="hide">Спрятанный текст</div>
</div>
<div class="view-source">
<a href="#">развернуть</a>
<div class="hide">Спрятанный текст</div>
</div>
<script>
$(function(){
$('.view-source .hide');
var $a = $('.view-source a');
$a.on('click', function(event) {
event.preventDefault();
$a.text("развернуть").not(this).next().slideUp(500);
var $hidden = $(this).next().is(":hidden");
$(this).next().slideToggle(500);
$hidden && $(this).text("свернуть");
});
});
</script>
</body>
</html>
|
Вариант
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<script src="https://code.jquery.com/jquery-1.11.0.min.js"></script>
</head>
<body>
<div class="view-source">
<a href="#">Развернуть</a>
<div class="hide">Спрятанный текст</div>
</div>
<div class="view-source">
<a href="#">Развернуть</a>
<div class="hide">Спрятанный текст</div>
</div>
<div class="view-source">
<a href="#">Развернуть</a>
<div class="hide">Спрятанный текст</div>
</div>
<script>
$(function(){
$('.view-source .hide').hide();
$a = $('.view-source a');
$a.on('click', function(event) {
event.preventDefault();
$a.not(this).next().slideUp(500);
$a.not(this).text('Развернуть');
$(this).next().slideToggle(500);
$(this).text($(this).text()=='Свернуть'?'Развернуть':'Свернуть');
});
});
</script>
</body>
</html>
|
Dilettante_Pro,
А подскажите, пожалуйста, вариант, где "свернуть/развернуть" были бы в каждом случае оригинальные для каждого спойлера. Т.е., например: Развернуть 1 / Свернуть 1 Спрятанный текст 1 Развернуть 2 / Свернуть 2 Спрятанный текст 2 |
mikeac,
сложно придумать такую открывашку, которой ещё нет на форуме :lol: Открывашка 250 открытие/закрытие блоков со сменой текста на кнопке |
рони, вы кинули ссылку с https протоколом, а в коде, что расположен на той странице jq подключается по http протоколу, поэтому ваш код будет нерабочим.
У некоторых пользователей могут возникнуть сложности с воспроизведением вашего кода. |
Nexus,
добавил s :thanks: |
| Часовой пояс GMT +3, время: 07:41. |