Показать сообщение отдельно
  #1 (permalink)  
Старый 14.04.2014, 00:39
Новичок на форуме
Отправить личное сообщение для brokenwind Посмотреть профиль Найти все сообщения от brokenwind
 
Регистрация: 14.04.2014
Сообщений: 6

Правильное всплытие события (делегирование)
здравствуйте, дорогие форумчане!

есть вопрос. не могу "добраться" до div'a по клику.
когда data-property установлен на ul, все работает хорошо.
а когда вешаю атрибут на div:
<div data-property='yes'>
<ul>#event
 <li>"new"</li>
 <li>"fuck"</li>
 <li>"there"</li>
 <li>"death"</li>
 <li>"new"</li>
 <li>"new"</li>
 <li>"oo"</li>
</ul>
</div>


не получается ничего. через console.log(target) вижу в только ul и li, которые расположены внутри div, то есть "сверху".

как заставить JS target'ом захватить div

искать по всем родительским узлам пока не найдется data-property не хочется. есть ли более элегантное решение?

код JS такой:

(function() {
   
    var app = {
         
        initialise: function () {          
            this.modules();
            this.setUpListeners();
        },
 
        modules: function () {
 
        },
 
        setUpListeners: function () {
			document.addEventListener('click', this.firstAction, false);
        },
 
        firstAction: function (e) {   
		//event.preventDefault(event);
			e = e || window.e;
			var target = e.target || e.srcElement;
			var yourData = target.getAttribute('data-property'); 
			if (yourData) alert('yes, baby, yes');
		}
	};      
         
    app.initialise();
 
}());


спасибо!

Последний раз редактировалось brokenwind, 14.04.2014 в 00:55.
Ответить с цитированием