CollapseCategoriesLight

Обсуждение новой системы расширения функциональности phpBB 4.0-dev, разработки новых расширений.
Алг
Сообщения: 645
Зарегистрирован: 18 фев 2014, 17:28

Collapse Categories 3.1

Сообщение Алг »

Alecto писал(а):сейчас обрабатывается только первый заголовок

Код: Выделить всё

	$(".topiclist").before(function(){
		if($(this).hasClass('topics'))
			return '<div class="collapsetrigger collapseactive"></div>';
	});


	$(".topics").wrap('<div class="collapsethis" aria-hidden="false"></div>');

как сделать, чтобы проход был по всем элементам на странице?

и, наверное, надо добавить условие, чтобы скрипт подключаелся только на главной странице?
как записать такое условие?
1. Проход по всем topiclist или topics? в люьом случае в выборку попадут все элементы на странице. А сколько конкретно, ты можешь узнать, поставив отладочную строку console.log($(".topiclist")) и потом рассмотреть в файрбаге, что у тебя в выборке.
Обработка каждого элемента через команду each
2. <!-- IF SCRIPT_NAME eq 'index' -->

Аватара пользователя
Татьяна5
Сообщения: 570
Зарегистрирован: 02 фев 2014, 15:05

Collapse Categories 3.1

Сообщение Татьяна5 »

2

Код: Выделить всё

<!-- IF S_INDEX -->
(В 3.1 добавили)

Аватара пользователя
Alecto
Сообщения: 571
Зарегистрирован: 05 авг 2014, 21:41

Collapse Categories 3.1

Сообщение Alecto »

спасибо за подсказки.
условия поставил.

с выводом кнопок слайдеров и блоков - тоже разобрался, все выводятся для категорий + recent topics

но вот еще одна проблемка нарисовалась...
класс collapsetrigger - это кнопка, на которую жмут
класс collapsethis - то, что надо сворачивать и разворачивать.

Код: Выделить всё

$('.collapsetrigger').click(function() {  

                    if ($('.collapsethis').attr('aria-hidden') == "false") {
				$('.collapsethis').attr('aria-hidden', 'true');
				$('.collapsethis').slideUp(500);
				$(this).removeClass(active);
				$(this).addClass(inactive);
			} else { 
				$('.collapsethis').attr('aria-hidden', 'false');
				$('.collapsethis').slideDown(500);
                       		$(this).removeClass(inactive);
				$(this).addClass(active);
			}


});
проблема в том, как отследить блок определенной кнопки? ведь кнопок/сворачиваемых блоков несколько и надо каждый должен управляться своей кнопкой.
сейчас же сворачиваются/разворачиваются все блоки любой кнопкой, зато переключение +/- на каждой кнопке работает.

Аватара пользователя
Татьяна5
Сообщения: 570
Зарегистрирован: 02 фев 2014, 15:05

Collapse Categories 3.1

Сообщение Татьяна5 »

Вариант 1 - добавлять id с номерами категорий (к примеру, collapsetrigger123 и collapsethis123) и обращаться по ним
Вариант 2 - от класса collapsetrigger добраться до соответствующего ему collapsethis с помощью функций перемещения по дереву DOM

Аватара пользователя
Alecto
Сообщения: 571
Зарегистрирован: 05 авг 2014, 21:41

Collapse Categories 3.1

Сообщение Alecto »

в примере помоему реализован 2 вариант

Алг
Сообщения: 645
Зарегистрирован: 18 фев 2014, 17:28

Collapse Categories 3.1

Сообщение Алг »

Alecto писал(а):$('.collapsethis')
замени на

Код: Выделить всё

 $(this).find('.collapsethis')
и будет 2-й вариант

Аватара пользователя
Татьяна5
Сообщения: 570
Зарегистрирован: 02 фев 2014, 15:05

Collapse Categories 3.1

Сообщение Татьяна5 »

Alecto писал(а):в примере помоему реализован 2 вариант
Нет. $('.collapsethis') - это обращение напрямую ко всем элементам с классом collapsethis
Алг писал(а):

Код: Выделить всё

$(this).find('.collapsethis')
Алг, там 2-й div не внутри первого (вроде как)

На 3.0 подошло бы

Код: Выделить всё

$(this).next('.collapsethis')
, а как сделано на 3.1 - не знаю, итогового кода не видела

Алг
Сообщения: 645
Зарегистрирован: 18 фев 2014, 17:28

Collapse Categories 3.1

Сообщение Алг »

я ж тоже ни хтмл, ни кода, кроме приведённого не видела
да, тут след. элемент надо брать

Аватара пользователя
Alecto
Сообщения: 571
Зарегистрирован: 05 авг 2014, 21:41

Collapse Categories 3.1

Сообщение Alecto »

спасибо! получилос!

Код: Выделить всё

$('.collapsetrigger').click(function() {  
 
                    if ($(this).next().attr('aria-hidden') == "false") {
				$(this).next().attr('aria-hidden', 'true');
				$(this).next().slideUp(500);
				$(this).removeClass(active);
				$(this).addClass(inactive);
			} else { 
				$(this).next().attr('aria-hidden', 'false');
				$(this).next().slideDown(500);
                       		$(this).removeClass(inactive);
				$(this).addClass(active);
			}
});
что умеем: вывожу кнопки во все категории, сворачиваю/разворачиваю категории.

Алг
Сообщения: 645
Зарегистрирован: 18 фев 2014, 17:28

Collapse Categories 3.1

Сообщение Алг »

Alecto писал(а):что умеем
не храним

Ответить