While event delegation doesn't work 100% of the time (e.g. when another piece of code that uses capture instead of bubbling such as google maps API), I wouldn't consider it a hack. Of course event handling will be slower but we can test how much slower :).
You can do that with jQuery as well and that's an ineresting performance comparison in itself. E.g. $('.class:visible:not(:eq(1))') vs $('.class').filter(':visible').not(':eq(1)'). I suspect it heavily depends on the size of the DOM tree and the number of elements.