Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Групировка многоуровнего меню (https://javascript.ru/forum/dom-window/51977-grupirovka-mnogourovnego-menyu.html)

Rorbi 28.11.2014 14:35

Групировка многоуровнего меню
 
Здравствуйте. подскажите пожалуйста.
имеется меню вот такого вида
<ul class="leftMenu collapsible">
	<li class="cat=1">
		<a class="" href="#">Категория1/1</a>
		<ul class="leftMenuInside">
			<li class="cat=1"><a href="ссылка">СерПол1/1 name</a></li>
			<li class="cat=2"><a href="ссылка2">СерПол1/2 name</a></li>
		</ul>
	</li>
	<li class="cat=2">
		<a class="" href="#">Категория1/2</a>
		<ul class="leftMenuInside">
			<li class="cat=1"><a href="ссылка">СерПол1/1 name</a></li>
			<li class="cat=2"><a href="ссылка2">СерПол1/2 name</a></li>
		</ul>
	</li>
</ul>



Подскажите как с помощью javascript чистого или jQuery
сделать так что бы оно стало вот такого вида
<ul class="leftMenu collapsible">
	<li class="cat=1">
		<a class="" href="#">Категория1/1</a>
		<ul class="leftMenuInside">
			<li class="cat=1"><a href="ссылка">СерПол1/1 name</a></li>
		</ul>
	</li>
	<li class="cat=2">
		<a class="" href="#">Категория1/2</a>
		<ul class="leftMenuInside">
			<li class="cat=2"><a href="ссылка2">СерПол1/2 name</a></li>
		</ul>
	</li>
</ul>


То есть <li class="cat=1"> имел внутри себя только элементы с классом class="cat=1" (<li class="cat=1"><a href="ссылка">СерПол1/1 name</a>), ну и тд <li class="cat=2"> только (<li class="cat=2"><a href="ссылка">СерПол1/1 name</a>)

Rorbi 28.11.2014 15:02

а не соответствующим классам например если <li class="cat=1">
будет содержать <li class="cat=2">
то он добавил <li class="cat=2"> display none (скрыл данный элемент)

ksa 28.11.2014 15:13

Цитата:

Сообщение от Rorbi
Подскажите как с помощью javascript чистого или jQuery
сделать так что бы оно стало вот такого вида

Как вариант...

<!DOCTYPE html>
<html>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function (){
	$('.leftMenu > li').each(function (){
		$(this).find('li[class!="'+this.className+'"]').hide();
	});
});
</script>
</head>
<body> 
<ul class="leftMenu collapsible">
	<li class="cat=1">
		<a class="" href="#">Категория1/1</a>
		<ul class="leftMenuInside">
			<li class="cat=1"><a href="ссылка">СерПол1/1 name</a></li>
			<li class="cat=2"><a href="ссылка2">СерПол1/2 name</a></li>
		</ul>
	</li>
	<li class="cat=2">
		<a class="" href="#">Категория1/2</a>
		<ul class="leftMenuInside">
			<li class="cat=1"><a href="ссылка">СерПол1/1 name</a></li>
			<li class="cat=2"><a href="ссылка2">СерПол1/2 name</a></li>
		</ul>
	</li>
</ul>
</body>
</html>

Rorbi 28.11.2014 15:34

Цитата:

Сообщение от ksa (Сообщение 343252)
Как вариант...

<script type='text/javascript'>
$(function (){
$('.leftMenu > li').each(function (){
$(this).find('li[class!="'+this.className+'"]').hide();
});
});
</script>
[/html]

Спасибо, работает как надо
и можно за место hide поставит remove ()
Спасибо огромное


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