подскажите скрипт для сворачивания текста
Здравтсвуйте. Подскажите JQuery скрипт для свертки/развертки текста.
Вроде нашел что-то похожее: roothelp.ru/lessons_post.php?id=26, но в исходниках нет сайта автора, следовательно и документации нет, а мне нужно не совсем то, что нужно в "уроке". Мне нужно, чтобы был полуразвернутый div с кнопкой внизу типа "больше параметров" и соответвенно при нажатии разворачивался и показывал все доступные параметры и наоборот. |
задайте блоку overflow: hidden и изменяйте его высоту от фиксированного значения до auto и наоборот.
|
Моих скиллов хватает, чтобы подпилить готовые скрипты по инструкциям, но не написать новые.
|
Исход на днях я нашел на просторах интернета у меня работает....
Иногда есть необходимость показать какой-либо текст нажав на ссылочку, при этом не перезагружая страницу. Сделать это легко с помощью JavaScript. Пишем вот такой простой скрипт: Код:
<script>Есть другой вариант. При нажатии на ссылку меняется надпись "ПОКАЗАТЬ-СКРЫТЬ" Код:
<script> Код:
<div id='text1' style='display: none;'> Код:
<span id='ontext1' style='display: inline;'>Подгружаем скрипт: Код:
<script type="text/javascript" src="jquery.js"></script>Код:
.opis{display:none; text-align: justify;} |
Sonnic, я писал, что у меня не работает? Нет! Я писал, что мне нужно кое-что немного другое. Возможно и этот скрипт мог бы выполнить то же самое, но мануала нет, а есть только небольшой "урок".
|
<style>
#spoiler {
overflow: hidden;
height: 30px;
line-height: 15px;
}
#spoiler.active {
height: auto;
}
</style>
<div id="spoiler">
немного параметров<br>
еще чуть-чуть параметров<br>
больше параметров<br>
еще больше параметров<br>
намного больше параметров<br>
</div>
<button onclick="document.getElementById('spoiler').className='active'; this.style.display = 'none'">больше параметров</button>
|
Спасибо за код, правда почему-то нужного эффекта не происходит: кнопка пропадает, класс вроде тоже привязывается, но перерендера окна не происходит. height: auto! important; не помогает
|
frenzy,
Используйте jQuery и будет вам счастье. То что вам нужно там есть, называется slideDown, slideUp или slideToggle. И документации навалом. |
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<style>
#spoiler div {
display: none
}
</style>
<div id="spoiler">
немного параметров<br>
еще чуть-чуть параметров<br>
<div>
больше параметров<br>
еще больше параметров<br>
намного больше параметров<br>
</div>
</div>
<button>больше параметров</button>
<script>
$("button").click(function () {
$("#spoiler div").slideToggle();
})
</script>
|
Ыгы, работает. Только мне ж нужно из позиции
overflow: hidden; height: 500px; В height: auto; попасть, а эта функция похоже переключает display:none/block. Я же писал, что display: none; - это не мой вариант, иначе я бы просто воспользовался скриптом, который сам и нашел в начале. |
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<style>
#spoiler {
overflow: hidden;
height: 30px;
line-height: 15px;
}
#spoiler.active {
height: auto;
}
</style>
<div id="spoiler">
немного параметров<br>
еще чуть-чуть параметров<br>
больше параметров<br>
еще больше параметров<br>
намного больше параметров<br>
</div>
<button>больше параметров</button>
<script>
$("button").click(function () {
if ($("#spoiler").css("height") == "30px") {
var height = $("#spoiler").css("height", "auto").height();
$("#spoiler").css("height", "30px")
$("#spoiler").animate({"height": height});
} else {
$("#spoiler").animate({"height": "30px"});
}
});
</script>
|
Что-то не работает. Файрбаг показывает, что var height = $("#spoiler").css("height", "auto").height(); выполняется и всё, но в итоге ничего не меняется и всегда выполянется только первое условие
А нет просто стандартной функции, которая могла бы перерендерить страницу после изменения height? Анимация мне не так важна. |
location.reload()
|
Разобрался, что-то с условным переходом не то.
Если поставить $("#spoiler").css("height") != "auto", то анимация происходит развертка, но сворачиваться не хочет. В JS точно можно просто так взять и сравнить строки? Поалертал. В общем округлять как-то нужно, ибо alert($("#jshop_unijax_filter").css("height")); выдает 500.5164px,(в css 500px) |
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<style>
#spoiler {
overflow: hidden;
height: 30px;
line-height: 15px;
}
#spoiler.active {
height: auto;
}
</style>
<div id="spoiler">
немного параметров<br>
еще чуть-чуть параметров<br>
больше параметров<br>
еще больше параметров<br>
намного больше параметров<br>
</div>
<button>больше параметров</button>
<script>
(function () {
var flag = true;
$("button").click(function () {
if (flag) {
var height = $("#spoiler").css("height", "auto").height();
$("#spoiler").css("height", "30px")
$("#spoiler").animate({"height": height});
} else {
$("#spoiler").animate({"height": "30px"});
}
flag = !flag;
});
})()
</script>
|
Цитата:
|
Строки сравнивать можно.
Если не важна анимация можно писать вместо
$("#spoiler").animate({"height": height});
вот так
$("#spoiler").css("height", "30px");
$("#spoiler").css("height", "auto");
|
Цитата:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<style>
#spoiler {
overflow: hidden;
height: 30px;
line-height: 15px;
}
#spoiler.active {
height: auto;
}
</style>
<div id="spoiler">
немного параметров<br>
еще чуть-чуть параметров<br>
больше параметров<br>
еще больше параметров<br>
намного больше параметров<br>
</div>
<button>больше параметров</button>
<script>
(function ()
{
var flag = true;
$("button").click(function ()
{$("#spoiler").toggleClass('active')
}
)
}
)()
</script>
|
tsigel
27 $("#spoiler").css("height", "30px") - что делает эта строчка вообще и почему нет ; изначально? Ибо я убераю и ничего не происходит. Вообще ПОЧТИ.
(function($){
var collapsed = false;
$("#showmore").click(function () {
alert($("#jshop_unijax_filter").css("height"));
if (collapsed == 0) {
collapsed = true;
var height = $("#jshop_unijax_filter").css("height", "auto").height();
$("#jshop_unijax_filter").animate({"height": height});
} else {
$("#jshop_unijax_filter").animate({"height": "500px"});}
collapsed = false;
})
})(jQuery)
Вот только collapsed на true почему-то не меняется вообще. Уж не с локальностью переменных ли проблемы? |
Цитата:
if (collapsed) {
|
Ну да, что-то я с английским затупил. Но остается программерская проблема: collapsed - локальная переменная, которая похоже обнуляется после выполнения функции и переинициализируется каждый раз
|
(function($){
var collapsed = false;
$("#showmore").click(function () {
alert($("#jshop_unijax_filter").css("height"));
if (collapsed) {
collapsed = false;
var height = $("#jshop_unijax_filter").css("height", "auto").height();
$("#jshop_unijax_filter").animate({"height": height});
} else {
$("#jshop_unijax_filter").animate({"height": "500px"});}
collapsed = true;
})
})(jQuery)
|
Да оно так и есть у меня:
<script>
(function($){
var collapsed = true;
$("#showmore").click(function () {
if (collapsed) {
collapsed = false;
var height = $("#jshop_unijax_filter").css("height", "auto").height();
$("#jshop_unijax_filter").animate({"height": height});
} else {
$("#jshop_unijax_filter").animate({"height": "500px"});}
collapsed = true;
})
})(jQuery)
</script>
Но при каждом нажатии кнопки collapsed = true;, не зависимо от того, как оно было в конце исполнения предыдущей интерации. Говорю же, что переменная, похоже, локальная и дохнет сразу после исполнения. |
| Часовой пояс GMT +3, время: 08:06. |