07.07.2016, 10:49
|
Интересующийся
|
|
Регистрация: 11.10.2012
Сообщений: 13
|
|
Перемещение элемента по узлам DOM-дерева
Здравствуйте! Пожалуйста, помогите разобраться вот в чем:
При загрузки страницы отображается только часть описания. Рядом ссылка Show more. При клике по Show more описание разворачивается полностью, в конце него ссылка Show less, которая сворачивает описание до исходного состояния.
Проблема в том, что я не могу сделать так, что бы при сворачивании описания ссылка возвращалась на исходную позицию. Она так и остается после списка, а нужно вернуть её в конец параграфа.
Вот код:
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.0.0.js"></script>
<meta charset=utf-8 />
<style>
.description-product .bodySpoiler {
display: none;
}
.titleSpoiler {
color: #2EB0E4;
cursor: pointer;
}
</style>
<script>
$(document).on('click', '.titleSpoiler', function () {
var spoilerText = $('.description-product .bodySpoiler');
if (spoilerText.is(':visible')) {
$(this).text('Show more');
}
else {
$(this).text('Show less').appendTo('ul');
}
spoilerText.toggle();
});
</script>
</head>
<body>
<div class="description-product">
<p class="description_text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
<span class="bodySpoiler">Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum..</span> <a class="titleSpoiler">Show more</a>
</p>
<ul class="bodySpoiler">
<li>feature 1</li>
<li>feature 2</li>
<li>feature 3</li>
</ul>
</body>
</html>
http://jsbin.com/tadurorube/edit?html,css,js,output
|
|
07.07.2016, 11:22
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
Ranetka,
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.0.0.js"></script>
<meta charset=utf-8 />
<style>
.description-product .bodySpoiler {
display: none;
}
.titleSpoiler {
color: #2EB0E4;
cursor: pointer;
}
</style>
<script>
$(document).on('click', '.titleSpoiler', function (event) {
event.preventDefault();
$(this).text($('.description-product .bodySpoiler').toggle().is(":hidden") ? "Show more" : "Show less");
});
</script>
</head>
<body>
<div class="description-product">
<p class="description_text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
<span class="bodySpoiler">Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum..</span>
</p>
<ul class="bodySpoiler">
<li>feature 1</li>
<li>feature 2</li>
<li>feature 3</li>
</ul><a class="titleSpoiler">Show more</a></div>
</body>
</html>
|
|
07.07.2016, 11:27
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
Ranetka,
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.0.0.js"></script>
<meta charset=utf-8 />
<style>
.description-product .bodySpoiler {
display: none;
}
.titleSpoiler {
color: #2EB0E4;
cursor: pointer;
}
</style>
<script>
$(document).on('click', '.titleSpoiler', function (event) {
event.preventDefault();
var hidden = $('.description-product .bodySpoiler').toggle().is(":hidden");
$(this).text(hidden ? "Show more" : "Show less").appendTo(hidden ? ".description_text" : ".description-product");
});
</script>
</head>
<body>
<div class="description-product">
<p class="description_text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
<span class="bodySpoiler">Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum..</span>
<a class="titleSpoiler">Show more</a></p>
<ul class="bodySpoiler">
<li>feature 1</li>
<li>feature 2</li>
<li>feature 3</li>
</ul></div>
</body>
</html>
|
|
07.07.2016, 12:41
|
Интересующийся
|
|
Регистрация: 11.10.2012
Сообщений: 13
|
|
рони, спасибо, второе решение - то что нужно.
Но вот если таких спойлеров будет несколько на странице? Как возвращать Show more к концу 'своего' параграфа?
|
|
07.07.2016, 16:11
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
открывашка 256 с перемещением кнопки
Ranetka,
255 вариантов было на на форуме ...
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.0.0.js"></script>
<meta charset=utf-8 />
<style>
.description-product .bodySpoiler {
display: none;
}
.titleSpoiler {
color: #2EB0E4;
cursor: pointer;
}
</style>
<script>
$(function() {
$(".description-product").on("click", ".titleSpoiler", function(event) {
event.preventDefault();
var hidden = $(".bodySpoiler", event.delegateTarget).toggle().is(":hidden");
$(this).text(hidden ? "Show more" : "Show less")
.appendTo(hidden ? $(".description_text", event.delegateTarget) : event.delegateTarget)
})
});
</script>
</head>
<body>
<div class="description-product">
<p class="description_text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
<span class="bodySpoiler">Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum..</span>
<a class="titleSpoiler">Show more</a></p>
<ul class="bodySpoiler">
<li>feature 1</li>
<li>feature 2</li>
<li>feature 3</li>
</ul></div>
<div class="description-product">
<p class="description_text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
<span class="bodySpoiler">Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum..</span>
<a class="titleSpoiler">Show more</a></p>
<ul class="bodySpoiler">
<li>feature 1</li>
<li>feature 2</li>
<li>feature 3</li>
</ul></div>
</body>
</html>
Последний раз редактировалось рони, 07.07.2016 в 16:15.
|
|
10.07.2016, 10:10
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
открывашка 256 с перемещением кнопки и текстом кнопки из data
Ranetka,
....
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.0.0.js"></script>
<meta charset=utf-8 />
<style>
.description-product .bodySpoiler {
display: none;
}
.titleSpoiler {
color: #2EB0E4;
cursor: pointer;
}
</style>
<script>
$(function() {
$(".description-product").on("click", ".titleSpoiler", function(event) {
event.preventDefault();
var hidden = $(".bodySpoiler", event.delegateTarget).toggle().is(":hidden");
$(this).text($(this).data("text")[+hidden])
.appendTo(hidden ? $(".description_text", event.delegateTarget) : event.delegateTarget)
})
});
</script>
</head>
<body>
<div class="description-product">
<p class="description_text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
<span class="bodySpoiler">Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum..</span>
<a class="titleSpoiler" data-text = '["Show less","Show more"]'>Show more</a></p>
<ul class="bodySpoiler">
<li>feature 1</li>
<li>feature 2</li>
<li>feature 3</li>
</ul></div>
<div class="description-product">
<p class="description_text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
<span class="bodySpoiler">Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum..</span>
<a class="titleSpoiler" data-text = '["Скрыть","Показать всё"]'>Показать всё</a></p>
<ul class="bodySpoiler">
<li>feature 1</li>
<li>feature 2</li>
<li>feature 3</li>
</ul></div>
</body>
</html>
|
|
10.07.2016, 23:16
|
Интересующийся
|
|
Регистрация: 11.10.2012
Сообщений: 13
|
|
рони, спасибо, очень помогли
|
|
|
|