[phpBB Debug] PHP Warning: in file [ROOT]/phpbb_seo/phpbb_seo_class.php on line 16: require() [function.require]: Unable to allocate memory for pool.
[phpBB Debug] PHP Warning: in file [ROOT]/includes/utf/utf_tools.php on line 1776: include() [function.include]: Unable to allocate memory for pool.
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb_seo/phpbb_seo_class.php on line 873: include() [function.include]: Unable to allocate memory for pool.
[phpBB Debug] PHP Warning: in file [ROOT]/common.php on line 131: require() [function.require]: Unable to allocate memory for pool.
[phpBB Debug] PHP Warning: in file [ROOT]/viewtopic.php on line 18: include() [function.include]: Unable to allocate memory for pool.
[phpBB Debug] PHP Warning: in file [ROOT]/viewtopic.php on line 19: include() [function.include]: Unable to allocate memory for pool.
[phpBB Debug] PHP Warning: in file [ROOT]/includes/session.php on line 554: include_once() [function.include-once]: Unable to allocate memory for pool.
[phpBB Debug] PHP Warning: in file [ROOT]/includes/session.php on line 1047: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3953)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/session.php on line 1047: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3953)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/session.php on line 1047: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3953)
[phpBB Debug] PHP Warning: in file [ROOT]/viewtopic.php on line 1299: include() [function.include]: Unable to allocate memory for pool.
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4840: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3953)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4842: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3953)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4843: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3953)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4844: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3953)
jQuery форум
Slyweb
На разработку сайта! Скидки 50%!

Некрасивый slideToggle. Замучался уже.

Вы можете задавать любые вопросы по jQuery.

Некрасивый slideToggle. Замучался уже.

Сообщение ASPtema » 22 ноя 2009, 04:00

имеется следующий код:
Код: Выделить всё
<script type="text/javascript" src="jquery.js"></script>

<script type="text/javascript">
$(document).ready(function(){
   
   $(".accordion h3:first").addClass("active");
   $(".accordion p:not(:first)").hide();

   $(".accordion h3").click(function(){
      $(this).next("p").slideToggle("slow")
      .siblings("p:visible").slideUp("slow");
      $(this).toggleClass("active");
      $(this).siblings("h3").removeClass("active");
   });

});
</script>

<style type="text/css">
body {
   margin: 10px auto;
   width: 570px;
   font: 75%/120% Arial, Helvetica, sans-serif;
}
.accordion {
   width: 480px;
   border-bottom: solid 1px #c4c4c4;
}
.accordion h3 {
   background: #e9e7e7 url(images/arrow-square.gif) no-repeat right -51px;
   padding: 7px 15px;
   margin: 0;
   font: bold 120%/100% Arial, Helvetica, sans-serif;
   border: solid 1px #c4c4c4;
   border-bottom: none;
   cursor: pointer;
}
.accordion h3:hover {
   background-color: #e3e2e2;
}
.accordion h3.active {
   background-position: right 5px;
}
.accordion p {
   background: #f7f7f7;
   margin: 0;
   padding: 10px 15px 20px;
   border-left: solid 1px #c4c4c4;
   border-right: solid 1px #c4c4c4;
}
</style>
</head>

<body>

<div class="accordion">
   <h3>Question One Sample Text</h3>
   <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi malesuada, ante at feugiat tincidunt, enim massa gravida metus, commodo lacinia massa diam vel eros. Proin eget urna. Nunc fringilla neque vitae odio. Vivamus vitae ligula.</p>
   <h3>This is Question Two</h3>
   <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi malesuada, ante at feugiat tincidunt, enim massa gravida metus, commodo lacinia massa diam vel eros. Proin eget urna. Nunc fringilla neque vitae odio. Vivamus vitae ligula.</p>
   <h3>Another Questio here</h3>
   <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi malesuada, ante at feugiat tincidunt, enim massa gravida metus, commodo lacinia massa diam vel eros. Proin eget urna. Nunc fringilla neque vitae odio. Vivamus vitae ligula.</p>
   <h3>Sample heading</h3>
   <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi malesuada, ante at feugiat tincidunt, enim massa gravida metus, commodo lacinia massa diam vel eros. Proin eget urna. Nunc fringilla neque vitae odio. Vivamus vitae ligula.</p>
   <h3>Sample Question Heading</h3>
   <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi malesuada, ante at feugiat tincidunt, enim massa gravida metus, commodo lacinia massa diam vel eros. Proin eget urna. Nunc fringilla neque vitae odio. Vivamus vitae ligula.</p>
</div>

</body>
</html>

Оно все работает, но когда разворачивается элемент, то после разворота получается резкий "скачок" вниз. Через плагин аккордеон из jQuery-UI все идет более-менее нормально, но я не хочу из пушки по воробьям стрелять. Как можно сгладить разворот эффекта???
ASPtema
 

Re: Некрасивый slideToggle. Замучался уже.

Сообщение admin » 22 ноя 2009, 13:07

Добавьте в .accordion p height:100px;
admin
Администратор
 
Сообщения: 165
Зарегистрирован: 15 авг 2009, 20:02

Re: Некрасивый slideToggle. Замучался уже.

Сообщение ASPtema » 22 ноя 2009, 17:16

добавил. Получилось. И естественно родился вопрос - а если параграфы разной высоты?
ASPtema
 

Re: Некрасивый slideToggle. Замучался уже.

Сообщение RomaTTi » 22 ноя 2009, 19:41

Если параграфы разной высоты, то получи размер параграфа.Например $("p").height()
RomaTTi
 
Сообщения: 4
Зарегистрирован: 06 ноя 2009, 22:17

Re: Некрасивый slideToggle. Замучался уже.

Сообщение asptema » 24 ноя 2009, 02:46

Всем большое человеческое спасибо! Заработало! вот чисто jQ:
Код: Выделить всё
$(".accordion h3").click(function(){
      var h = $(this).next('div').height();
      $(this).next("div").height(h).slideToggle(1000).siblings("div:visible").slideUp(1000);
      $(this).toggleClass("active");
      $(this).siblings("h3").removeClass("active");
});

наверняка есть способ записать то же самое короче. но меня и так устраивает.
asptema
 
Сообщения: 4
Зарегистрирован: 22 ноя 2009, 17:31

Re: Некрасивый slideToggle. Замучался уже.

Сообщение admin » 25 ноя 2009, 13:21

Самый минимальный код
Код: Выделить всё
$(function(){
$(".accordion p:not(:first)").hide();
$(".accordion h3").click(function(){
      var h = $(this).next().height();
      $(this).next().height(h).slideToggle();
});
});
admin
Администратор
 
Сообщения: 165
Зарегистрирован: 15 авг 2009, 20:02

Re: Некрасивый slideToggle. Замучался уже.

Сообщение asptema » 26 ноя 2009, 00:21

кто короче? :) :) :)
скоро видать на jQ можно будет написать: $('#myid').свернисьнахкрасиво();
asptema
 
Сообщения: 4
Зарегистрирован: 22 ноя 2009, 17:31

Re: Некрасивый slideToggle. Замучался уже.

Сообщение admin » 26 ноя 2009, 02:26

Может быть ещё короче кто знает? :D
admin
Администратор
 
Сообщения: 165
Зарегистрирован: 15 авг 2009, 20:02

Re: Некрасивый slideToggle. Замучался уже.

Сообщение sultan » 30 дек 2009, 18:16

Еще короче, у меня работает:
$(".accordion").click(function () {
$(this).next().slideToggle("normal");
$(this).toggleClass("active"); return false;
});
Последний раз поднималось Anonymous 30 дек 2009, 18:16.
sultan
 


Вернуться в Вопросы по jQuery

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron