Делегирование событий и их папа
Приветствую всех!
Проблема следующая: Есть общий блок в котором много вложенных (дочерних) На этом общем блоке я повесил обработчик, так вот, если пользователь осуществляет клик по дочернему блоку можно ли одним движением руки узнать его родителя? Если принимать во внимании то, что в дочерних блоках находятся свои вложенные блоки.... |
Можно, и даже без движения руки object.prentNode - вернет родителя object.
Если принимать во внимании то, что в дочерних блоках находятся свои вложенные блоки Родители, это по дереву вверх, вниз, это потомки. |
laimas,
К такому подходу я пришел сам, и мне кажется, что это какой-то костыль.... Вот думаю, может есть более простой способ! |
>это какой-то костыль....
Вот думаю, может есть более простой способ! Ну а почему бы и нет - попробуйте позвонить в справочную службу 09. ) |
Есть node.compareDocumentPosition( otherNode ).
Не знаю правда как с производительностью по сравнению с проходом по цепочке parentNode.) |
Aetae,
C поддержкой проблемы. Я думал, что есть какой-то способ через событие получить объект элемента, который делегирует событие |
Делегируют как раз родителю, а щелкают как раз по потомкам.
|
По производительности проверил, выигрыш явный в случае если нода не дочерняя. Впрочем в вашем случае это не имеет ни малейшего значения ибо задержка пренебрежимо мала.
А так да ie9+, ослик как всегда нагадил. P.S. Прочитал повнимательнее и понял что ничего не понял.) Есть this(на чём висит) и есть event.target(куда кликнули), а вам нужно что-то между ними? |
Я правильный код сделал для вопроса?
https://jsfiddle.net/duyy7ymd/ |
Цитата:
var parent = document.querySelector('.parent') parent.addEventListener('click', function(e){ console.log('родитель является блок с классом ' + e.target.className) }) |
Часовой пояс GMT +3, время: 01:18. |