The events don't know of your render order, as such, you'll have to introduce your own depth/z-ordering.
That way your event processing would start at the upper most layer, where you then can also mark the event consumed and don't let is pass down to lower levels.
You can also make this simpler, but in the end, you'll have to somehow track what is at which depth.