Страница 2 из 6

Collapse Categories 3.1

Добавлено: 21 авг 2014, 08:03
Алг
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' -->

Collapse Categories 3.1

Добавлено: 21 авг 2014, 09:23
Татьяна5
2

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

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

Collapse Categories 3.1

Добавлено: 21 авг 2014, 16:23
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);
			}


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

Collapse Categories 3.1

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

Collapse Categories 3.1

Добавлено: 21 авг 2014, 17:46
Alecto
в примере помоему реализован 2 вариант

Collapse Categories 3.1

Добавлено: 21 авг 2014, 17:56
Алг
Alecto писал(а):$('.collapsethis')
замени на

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

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

Collapse Categories 3.1

Добавлено: 21 авг 2014, 18:04
Татьяна5
Alecto писал(а):в примере помоему реализован 2 вариант
Нет. $('.collapsethis') - это обращение напрямую ко всем элементам с классом collapsethis
Алг писал(а):

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

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

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

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

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

Collapse Categories 3.1

Добавлено: 21 авг 2014, 18:10
Алг
я ж тоже ни хтмл, ни кода, кроме приведённого не видела
да, тут след. элемент надо брать

Collapse Categories 3.1

Добавлено: 21 авг 2014, 18:10
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);
			}
});
что умеем: вывожу кнопки во все категории, сворачиваю/разворачиваю категории.

Collapse Categories 3.1

Добавлено: 21 авг 2014, 18:14
Алг
Alecto писал(а):что умеем
не храним