I give each element a unique class
You might be better off dropping this and using an id instead. This has a number of advantages.
First, an id is supposed to represent a unique thing, whereas class is for groups.
Second, in order to use label elements most effectively, you need to use a for attribute rather then nesting the control inside the label (this is due to the for approach having better support from browsers) - so you should have a unique id on each control anyway.