I think I quite like this approach.

Can you traverse upwards in enlive? The only other option I can think of is to find matching buttons and then look up the tree for the form.