Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Помогите разобраться с jquery.collapse.js (https://javascript.ru/forum/jquery/54232-pomogite-razobratsya-s-jquery-collapse-js.html)

alecto 10.03.2015 01:02

Помогите разобраться с jquery.collapse.js
 
Сначала начну с того, что нужно получить.
Есть форум http://motobratva.com/index.php где категории сворачиваются/разворачиваются при нажатии на кнопки, состояние запоминается.
Код самописный, анимация сделана через slideUp/slideDown/animate, возможно поэтому не очень плавная.

Нашел библиотеку jquery.collapse.js,
Примеры здесь http://webcloud.se/jQuery-Collapse/
Описание здесьhttps://github.com/danielstocks/jQue...979a/README.md
У человека http://www.dmzx-web.net/ на более ранней версии библиотеки, похоже по этому примеру http://www.ppkbb3cker.ru/viewtopic.php?f=56&t=2308 все работает плавно и красиво.
но, я никак не могу разобраться с работой этой библиотеки и вызовами.
Хочу получить то же, что и сейчас, но на базе библиотеки jquery.collapse.js с плавной анимацией.


все эксперименты проводятся на тестовом сайте, ссылку могу предоставить, но его надо подключать через hosts

что пробовал...
подключил библиотеки и следующим кодом завернул разделы forabg в общий блок forumlist
$('.forabg').wrapAll('<div class="forumlist" data-collapse/>');

скрипт добавил свои данные в структуру
<div class="forumlist" data-collapse="">
<div class="forabg" data-collapse-summary="" aria-expanded="false">
<div class="forabg" style="display: none;" aria-hidden="true">
<div class="forabg" data-collapse-summary="" aria-expanded="false">
</div>

заголовки у меня стали кликабельны, но почему-то всегда сворачивается второй раздел при клике на первый.
на этом застрял

далее нужно будет прикрутить вызов коллапса с кнопок, но пока я застрял в самом начале ((

помогите пожалуйста разобраться.
что-то сам никак, туплю.

alecto 10.03.2015 01:59

поставил другую версию библиотеки
* Collapse plugin for jQuery
* http://github.com/danielstocks/jQuery-Collapse/
*
* @author Daniel Stocks (http://webcloud.se)
* @version 0.9.1


с таким кодом заработало

(function ($) {  

	$('.forabg').wrapAll('<div class="forumlist"/>');

	$('.topiclist.forums').before('<div class="trigger active"></div>').wrap('<div class="collapsethis" />');





 $(".forumlist").collapse({show: function(){
this.animate({
opacity: '1.0',
height: 'toggle'
}, 300);
},
hide : function() {
this.animate({
opacity: '0.3',
height: 'toggle'
}, 300);
}
});


})(jQuery);


как заставить работать с версией 1.1.0?

рони 10.03.2015 02:28

alecto,
а смысл менять одно на другое если вас только плавность неустраивает
ставите jquery-ui выбираите нужную плавность http://api.jqueryui.com/easings/
и получите тотже эффект и может лучше
http://jsbin.com/kiyemetezu/1/

alecto 10.03.2015 02:30

в принципе разобрался, на старой версии библиотеки построил. на новой - почему-то не работает.

рони, речь идет не о скорости анимации, с ней все понятно.
я имею ввиду плавность анимации.
она не сравнима. почему - не знаю.

alecto 10.03.2015 02:37

рони, если вы успели пробовать, как было... залил на основу, попробуйте как стало работать http://motobratva.com/index.php - небо и земля.

единственный вопрос - как заставить работать в новой версии библиотеки.

рони 10.03.2015 02:37

alecto,
чтобы заменить slideUp(500) на animate({height: 'toggle'}) вы тащите устаревший плагин к себе на форум?

рони 10.03.2015 02:41

вы смотрели вариант по ссылке в 3 посте? если не устроил более ничем помочь не могу

alecto 10.03.2015 02:46

уже засыпаю, не заметил ссылок.
наверно вы правы. можно поиграться с замедлениями.
что нужно менять для варианта .slideUp(100), чтобы получить замедления?

рони 10.03.2015 02:53

alecto,
добавлено после jquery.min
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
и измененён только этот блок
// отрабатываем клики показать/скрыть категорию
	$('.collapsetrigger').click(function() {
	    var showhidden_triger_this = $(this).next().attr('aria-hidden');
	    if (showhidden_triger_this == "false") {
	        $(this).next().attr('aria-hidden', 'true').slideUp(800, 'easeOutQuart', function() {
	            $(this).parents('div.forabg').animate({
	                opacity: '0.4'
	            }, 500)
	        });
	        $(this).removeClass(active).addClass(inactive);
	    } else {
	        $(this).parents('div.forabg').animate({
	            opacity: '1.0'
	        }, 300, function() {
	            $('.collapsetrigger', this).next().attr('aria-hidden', 'false').slideDown(1500, 'easeOutQuad')
	        })

	        $(this).removeClass(inactive).addClass(active);
	    }
	    localStorage.setItem($(this).attr('cat'), showhidden_triger_this); // сохраняем

	});

alecto 10.03.2015 03:15

обратно не хочет разворачиваться.


Часовой пояс GMT +3, время: 03:30.