If you attach handlers via jQuery, they will be launched in the order in which they were attached. This is described in the bind method :
When an event reaches an element, all handlers associated with this type of event for the element are fired. If multiple handlers are registered, they will always be executed in the order in which they were connected. After all handlers are executed, the event continues along the path of propagation of the normal event.
You are right that the DOM Events specification does not specify the order for event handlers ( link ), and in fact, most browsers do this in one case, IE does it differently. A guaranteed order is what jQuery does for you (by attaching only one handler to the event per element - its own - and then its own dispatcher for real handlers connected via jQuery). Naturally, this means that the order in which the handlers associated with jQuery are called as a block is not defined with respect to handlers attached in a different way.
source share