Наш чат в Telegram для обмена идеями, проектами, мыслями, людьми в сфере ИТ г.Ростова-на-Дону: @it_rostov

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

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

Обратите внимание, что при клике по ссылке к ней добавляется '?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>


.