Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Запретить ссылку если есть подменю. (https://javascript.ru/forum/dom-window/69204-zapretit-ssylku-esli-est-podmenyu.html)

Jolly 05.06.2017 21:50

Запретить ссылку если есть подменю.
 
Здравствуйте.

Подскажите пожалуйста, как запретить ссылку в главном меню, если у него есть подменю? Как запретить вообще знаю, но в главном меню есть вкладки у которых нет подменю и они должны работать, а у тех которых есть подменю, ссылка должна быть запрещена, а дочерние отрываться и работать.:) Надеюсь понятно объяснила..

рони 05.06.2017 22:00

Jolly,
может код? а так выбрать подменю, выбрать ссылку, поставить event.preventDefault(); и всё

j0hnik 05.06.2017 22:03

<head>
	<meta charset="utf-8">
</head>
<body>
<ul>
	<li><a href="http://google.com">google</a></li>
	<li><a href="http://google.com">google</a></li>
		<ul>
			<li><a href="http://google.com">google</a></li>
		</ul>
		<li><a href="http://google.com">google</a></li>
	<li><a href="http://google.com">google</a></li>
</ul>

	<script>
document.querySelectorAll("ul > ul > li > a")[0].onclick = function(){
  event.preventDefault();
};
</script>
</body>

выбирите нужный селектор
вот вам пример!

рони 05.06.2017 22:06

Jolly,
как вариант ...
http://javascript.ru/forum/project/3...na-jquery.html

laimas 06.06.2017 04:52

Цитата:

Сообщение от Jolly
как запретить ссылку в главном меню, если у него есть подменю?

А зачем же вы формируете ссылку у элемента, которому она не нужна?

Jolly 06.06.2017 16:04

Цитата:

Сообщение от j0hnik (Сообщение 454610)
<head>
	<meta charset="utf-8">
</head>
<body>
<ul>
	<li><a href="http://google.com">google</a></li>
	<li><a href="http://google.com">не должна работь</a>
		<ul>
			<li><a href="http://google.com">google</a></li>
		</ul>
         </li>
	 <li><a href="http://google.com">google</a></li>
          <li><a href="http://google.com">не должна работь</a>
		<ul>
			<li><a href="http://google.com">google</a></li>
		</ul>
         </li>
	<li><a href="http://google.com">google</a></li>
</ul>

	<script>
document.querySelectorAll("ul > ul > li > a")[0].onclick = function(){
  event.preventDefault();
};
</script>
</body>

выбирите нужный селектор
вот вам пример!

Спасибо за ответ.
Наверное я не правильно объяснила(.. В вашем примере, мне нужно чтобы все ссылки открывались, кроме "не должна работать".

Jolly 06.06.2017 16:05

Я работаю с Друпал, там наверное по-другому не уберешь(.

Jolly 06.06.2017 16:06

Спасибо за помощь, я написала в ответе код, посмотрите пожалуйста.

laimas 06.06.2017 16:45

Цитата:

Сообщение от Jolly
Я работаю с Друпал, там наверное по-другому не уберешь(

Это почему? Код меню формирует сервер, проверить, что есть подменю не сложно, а значит и не добавлять ссылку. Вот только подменю, это например подкатегории, а родитель сама категория. То есть вы фактически лишаете пользователя перехода на категорию. Умнее бы было раскрывать подменю по наведению, а щелчок это переходы.

j0hnik 06.06.2017 16:57

Цитата:

Сообщение от Jolly (Сообщение 454675)
Спасибо за ответ.
Наверное я не правильно объяснила(.. В вашем примере, мне нужно чтобы все ссылки открывались, кроме "не должна работать".

<head>
	<meta charset="utf-8">
</head>
<body>
	<ul>
		<li><a href="http://google.com">google</a></li>
		<li><a href="http://google.com">не должна работь</a>
			<ul>
				<li><a href="http://google.com">google</a></li>
			</ul>
		</li>
		<li><a href="http://google.com">google</a></li>
		<li><a href="http://google.com">не должна работь</a>
			<ul>
				<li><a href="http://google.com">google</a></li>
			</ul>
		</li>
		<li><a href="http://google.com">google</a></li>
	</ul>
	<script>
		var el = document.querySelectorAll("li:nth-child(2n+2) > a");
		for (var i=0; i<el.length; i++) {
			el[i].onclick = function(){
				event.preventDefault();
			}
		};
	</script>
</body>

Вот селектор для данного примера

Если у вас по другому сформировано все это не сработает!


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