я написал больше функций общего назначения, которая принимает селектор, событие типа и функцию обработчика, сродни on
функции JQuery в:
/** adds a live event handler akin to jQuery's on() */
function addLiveEventListeners(selector, event, handler){
document.querySelector("body").addEventListener(
event
,function(evt){
var target = evt.target;
while (target != null){
if (target.matches(selector)){
handler(evt);
return;
}
target = target.parentElement;
}
}
,true
);
}
Для Например, следующий будет вызываться для любой кнопки мыши на DIV, даже если она была добавлена к DOM в более позднее время:
addLiveEventListeners("div", "click", function(evt){ console.log(evt); });
Это работает на всех современных браузерах и Microsoft Edge. Для того, чтобы сделать его работу в IE9 - IE11 тест target.matches(selector)
должен быть изменен следующим образом:
var isMatch = target.matches ? target.matches(selector) : target.msMatchesSelector(selector);
, а затем тест if (isMatch)
будет работать для тех браузеров, а также.
См. Также мой ответ для Adding event listeners to multiple elements, который добавляет слушателей событий к самим элементам, а не к body
.
'elem.addEventListener ('event', function);'? – www139
http://www.w3schools.com/js/js_htmldom_eventlistener.asp – www139