Один обработчик на все клики

Часто встречается ситуация, когда нужно назначить обработчик события на много эллементов. Это решение отнимает много рессурсов и долго выполняется. Более элегантное решение, поставить обработчик на внешний блок и определять, на каком эллементе произошел клик мыши.

Обратите внимание, при клике по ссылке, к ней добавиться '?name=value'

Исходный код этого примера:
<a class='bundle' href=''>Ссылка для примера</a>
<script language="JavaScript">
var MMNav = {
    init: function() {
	document.onclick = function(e) {
	    var target = getEventTarget(e);
	    if (target && target.className == 'bundle' ) {
		target.href += '?name=value';
	    }
	    return true;
	};
    }
}
function getEventTarget(e) { // мультибраузерная функция
    var e = e || window.event;
    var targ = e.target || e.srcElement;
    while (targ && (!targ.href || targ.nodeType == 3)) { // боремся с Safari и вложенностью
	targ = targ.parentNode;
    }
    return targ;
}
window.onload=MMNav.init;
</script>
Теги:
Один обработчик
Добавлено: 12 Июля 2018 07:30:13 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...