У меня есть JQuery обработчик щелчка, который переключает один из элементов списка:
$(document).on('click', 'ul li', function() {
$(this).toggleClass('expanded');
});
С этим я могу изменить элемент Я щелкнул сворачивая и разворачивая его.
Но что, если я хочу, чтобы только один элемент был расширен, а ранее расширенный элемент закрывался, когда я нажимаю на другой?
Я хочу сделать это проходящее как $(this)
(нажал li
) и li.expanded
на JQuery селектор для toggleClass('expanded')
.
Нечто подобное (но это не работает):
$(document).on('click', 'ul li', function() {
$(this, 'ul li.expanded').toggleClass('expanded');
});
Заранее спасибо!
UPD: мне нужна эта функция, чтобы работать, даже если ни один из элементов не был расширен до (начало страницы) и быть в состоянии свернуть ранее расширенный элемент, когда я нажимаю на него.
это не работает правильно, если использование (не расширяется первый элемент):
$('li.expanded', this).toggleClass('expanded');
но прекрасно работает с:
$('li.expanded').toggleClass('expanded');
$(this).toggleClass('expanded');
Пожалуйста, посмотрите на моем обновленный вопрос –
я думаю, что это будет только переключение класса развернутым для щелкнутого элемента, но не удалить этот класс из предыдущего .expanded элемента – kapantzak
@s. webbandit: проверьте обновленный фрагмент ... –