I've been working on fabric.js — a canvas library to help with exactly that — manipulating objects on canvas, by handling events and user interactions. It's not released yet, but take a look at a simple preview demo.
You can also see it in action in this design editor, which it was originally created for.
Edit: The project is now available on github (open-sourced under MIT License)
To get started, check out:
- Demos (simple & complex, with code to show how they're done)
- Fabric.js presentation at FalsyValues (and another one at BK.js)
- Wiki on github (including FAQ)
- Documentation
- Google Group (ask any question there)
- Fabric.js on twitter (or short questions via twitter)
- Introduction to Fabric.js: Part 1 (article on ScriptJunkie)
- Introduction to Fabric.js: Part 2 (article on ScriptJunkie)
How does Fabric compare to other Javascript canvas libraries? Here's a comparison table.