Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   События клик. Почему так происходит. (https://javascript.ru/forum/jquery/42611-sobytiya-klik-pochemu-tak-proiskhodit.html)

Evgeny_Dedov 03.11.2013 00:06

События клик. Почему так происходит.
 
Здравствуйте.
Есть такая структура:
<ul class="vmenu">
  <li class="parent"><a href="#">Главная Категория</a></li>
      		<ul class="dropdown">
				 <li><a href="#"><span>Сотрудники</span></a></li>
			</ul>  
  </li>
  <li class="parent"><a href="#"><span>Главная Категория</span></a>
      <ul class="dropdown">
		  <li><a href="#"><span>Фото</span></a></li>  
	  </ul>
  </li>
</ul>

Нужно на главные категории повесить "Клик" и отменить действие по ссылке по умолчанию, по остальным оставить переход по адресу, Делаю так:
$(".parent A:first-child").bind('click',function(e){
	 e.preventDefault(e);
		var _this = $(this);
		 if(_this.next().css('display') == 'none') _this.next().slideDown('fast');
			 else _this.next().slideUp('fast');
		 _this.toggleClass('selected',5);
	 })


По главным всё нормально отрабатывает и отменяет переход.
А вот почему то по вложенным в класс "dropdown" ссылкам переход тоже отменяется, почему так? Ведь я выбираю и вешаю клик только на первые элементы класса ".parent".

ksa 03.11.2013 11:45

Цитата:

Сообщение от Evgeny_Dedov
А вот почему то по вложенным в класс "dropdown" ссылкам переход тоже отменяется, почему так? Ведь я выбираю и вешаю клик только на первые элементы класса ".parent".

Это только ты так думаешь...
А на самом деле селектор

.parent A:first-child


выбирает все вложеные в .parent "первые" ссылки...
Т.ч. меняй селектор.

.parent > A:first-child

BETEPAH 03.11.2013 11:49

Для данной структуры достаточно
.parent > a

Dozentos 03.11.2013 12:17

И bind советую поменять на on
С версии, если не ошибаюсь 1.7 bind и live считаются устаревшими, хотя пока поддерживаются.

Evgeny_Dedov 04.11.2013 01:34

Цитата:

Сообщение от BETEPAH
.parent > a

Спасибо за советы, всем. Удачи!


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