Something like the following should work:
var live = function(elm, eventType, callback) { document.addEventListener(eventType, function(event) { if(event.target === elm) { callback.call(elm, event); } }); };
Then you will use it as follows:
var element = document.getElementById('test'); live(element, 'click', function() {
EDIT: Great comments below. Here is the revised version:
var live = function(selector, eventType, callback) { document.addEventListener(eventType, function(event) { var elms = document.querySelectorAll(selector), target = event.target || window.event.srcElement; for (var i=0; i<elms.length; i++) { if (elms[0] === target) callback.call(elms[i], event); } }); };
Use it with css selectors
live('#test', 'click', function() {
jsFiddle: http://jsfiddle.net/49aJh/2/
source share