<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) {
|
| Часовой пояс GMT +3, время: 00:44. |