Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.03.2015, 15:43
Кандидат Javascript-наук
Отправить личное сообщение для zhurchik Посмотреть профиль Найти все сообщения от zhurchik
 
Регистрация: 04.06.2011
Сообщений: 116

Делегирование событий и их папа
Приветствую всех!
Проблема следующая:
Есть общий блок в котором много вложенных (дочерних)
На этом общем блоке я повесил обработчик, так вот, если пользователь осуществляет клик по дочернему блоку можно ли одним движением руки узнать его родителя? Если принимать во внимании то, что в дочерних блоках находятся свои вложенные блоки....
Ответить с цитированием
  #2 (permalink)  
Старый 12.03.2015, 16:21
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Можно, и даже без движения руки object.prentNode - вернет родителя object.

Если принимать во внимании то, что в дочерних блоках находятся свои вложенные блоки

Родители, это по дереву вверх, вниз, это потомки.
Ответить с цитированием
  #3 (permalink)  
Старый 12.03.2015, 16:36
Кандидат Javascript-наук
Отправить личное сообщение для zhurchik Посмотреть профиль Найти все сообщения от zhurchik
 
Регистрация: 04.06.2011
Сообщений: 116

laimas,
К такому подходу я пришел сам, и мне кажется, что это какой-то костыль....
Вот думаю, может есть более простой способ!
Ответить с цитированием
  #4 (permalink)  
Старый 12.03.2015, 16:42
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

>это какой-то костыль....
Вот думаю, может есть более простой способ!


Ну а почему бы и нет - попробуйте позвонить в справочную службу 09. )
Ответить с цитированием
  #5 (permalink)  
Старый 12.03.2015, 16:48
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,583

Есть node.compareDocumentPosition( otherNode ).
Не знаю правда как с производительностью по сравнению с проходом по цепочке parentNode.)
__________________
29375, 35
Ответить с цитированием
  #6 (permalink)  
Старый 12.03.2015, 17:10
Кандидат Javascript-наук
Отправить личное сообщение для zhurchik Посмотреть профиль Найти все сообщения от zhurchik
 
Регистрация: 04.06.2011
Сообщений: 116

Aetae,
C поддержкой проблемы.
Я думал, что есть какой-то способ через событие получить объект элемента, который делегирует событие
Ответить с цитированием
  #7 (permalink)  
Старый 12.03.2015, 17:16
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Делегируют как раз родителю, а щелкают как раз по потомкам.
Ответить с цитированием
  #8 (permalink)  
Старый 12.03.2015, 17:25
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,583

По производительности проверил, выигрыш явный в случае если нода не дочерняя. Впрочем в вашем случае это не имеет ни малейшего значения ибо задержка пренебрежимо мала.
А так да ie9+, ослик как всегда нагадил.

P.S. Прочитал повнимательнее и понял что ничего не понял.)
Есть this(на чём висит) и есть event.target(куда кликнули), а вам нужно что-то между ними?
__________________
29375, 35

Последний раз редактировалось Aetae, 12.03.2015 в 17:29.
Ответить с цитированием
  #9 (permalink)  
Старый 20.07.2016, 21:22
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

Я правильный код сделал для вопроса?
https://jsfiddle.net/duyy7ymd/
Ответить с цитированием
  #10 (permalink)  
Старый 20.07.2016, 22:25
Профессор
Отправить личное сообщение для Царь Леонид Посмотреть профиль Найти все сообщения от Царь Леонид
 
Регистрация: 22.08.2013
Сообщений: 217

Сообщение от DivMan Посмотреть сообщение
Я правильный код сделал для вопроса?
https://jsfiddle.net/duyy7ymd/
Нет, вы просто взяли элемент и повесили на него обработчик, а надо, чтобы показывался родитель.
var parent = document.querySelector('.parent')

parent.addEventListener('click', function(e){
	console.log('родитель является блок с классом ' + e.target.className)
})
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по обработке событий формы lexaaleynik Элементы интерфейса 2 20.10.2014 23:22
Ползунок JQuery: несколько событий? Veterinar jQuery 9 10.01.2014 20:57
Динамическое делегирование событий в backbone ssnikolay Библиотеки/Тулкиты/Фреймворки 4 13.11.2012 10:47
Переопределение событий lispik jQuery 4 13.01.2011 12:30
Скопировать обработчики событий с одного элемента на другой. Jurasmi Events/DOM/Window 3 10.11.2010 19:03