Для этого можно использовать делегирование события - нет необходимости в z-index и т. П.Присвоение одного (1) обработчика щелчка верхнему элементу div и, внутри обработчика, использование target / srcElement события, чтобы решить, что (не) делать с исходным элементом.Что-то вроде:
<div id="A" style="width:100px; height: 100px;
background: #00FF00; padding: 15px;
z-index: 50; opacity: .5"">
<div id="B" style="width:50px; height: 50px;
background: #FF0000; z-index:10;" ></div>
</div>
Функция обработчика:
function myHandler(e){
e = e || event;
var el = e.srcElement || e.target;
// no action for #B
if (el.id && /b/i.test(el.id)){ return true; }
alert(el.id || 'no id found');
}
// handler assignment (note: inline handler removed from html)
document.querySelector('#A').onclick = myHandler;
Посмотреть это в действии