Показать сообщение отдельно
  #1 (permalink)  
Старый 04.05.2016, 22:14
Аватар для IndigoHollow
Аспирант
Отправить личное сообщение для IndigoHollow Посмотреть профиль Найти все сообщения от IndigoHollow
 
Регистрация: 02.04.2012
Сообщений: 50

Оставить только родительский ul
Есть дерево категорий с подкатегориями. Когда я нахожусь на странице какой-либо категории или подкатегории, активному и родительскому элементу прислаевается класс active. Например, если я нахожусь в подкатегории Link31, то код выглядит так:

<div class="box-category">
    <ul>
		<li>
			<a href="url1">Link1</a>
			<ul class="active">
				<li>
					<a href="url11">Link11</a>
				</li>
				<li>
					<a href="url12">Link12</a>
				</li>
				<li>
					<a href="url13" class="active">Link13</a>
				</li>
				<li>
					<a href="url14">Link14</a>
				</li>
				<li>
					<a href="url15">Link15</a>
				</li>
			</ul>
		</li>
		<li>
			<a href="url2">Link2</a>
			<ul>
				<li>
					<a href="url21">Link21</a>
				</li>
				<li>
					<a href="url22">Link22</a>
				</li>
				<li>
					<a href="url23">Link23</a>
				</li>
				<li>
					<a href="url24">Link24</a>
				</li>
				<li>
					<a href="url25">Link25</a>
				</li>
				<li>
					<a href="url26">Link26</a>
				</li>
			</ul>
		</li>
    </ul>
</div>


Если визуально, то так:



Вопрос: как оставлять видимой только родительский ul выбранной подкатегории со всеми его li? Т.е. если мы находимся, например, на странице Link13, должно показываться только:



Пытался делать так, но остается только родительский ul + выбранный li, а все остальные li пропадают:

function hasClass(element, cls) {
			return (' ' + element.className + ' ').indexOf(' ' + cls + ' ') > -1;
		}

var subcat = $('.box-category ul:nth-child(1) li a');
			for (var k = 0; k < subcat.length; k++) {
				if (hasClass(subcat[k], 'active')) {
					$(subcat[k]).closest('li').css('display', 'block');
				} else {
					$(subcat[k]).closest('li').css('display', 'none');
				}
			}
Ответить с цитированием