подскажите скрипт для сворачивания текста
Здравтсвуйте. Подскажите 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, время: 22:47. |