What you are looking for is called event delegation, and yes, it scales well, while attaching loads of listeners to individual elements doesn't. In my experience, you take the worst part of the performance hit when you set up the handlers.
Another answer on SO deals with the performance implications, too, and links to this test on jsPerf (currently unavailable because jsPerf is closed down for an overhaul).
Perhaps more helpful, then, are these two demos of mine: Generating 1000 elements with Backbone, one time with event delegation, another time without.
As you can see from the demo, the impact is significant. Three events are set up in the demos – mousedown
, mouseup
, click
– and the time to generate the page roughly doubles in the demo without event delegation.
On the other hand, if you look at the source code, you will see that some things can become a bit more complicated when you use delegation. It is easy to access model data when you bind the handler to an individual item view (this.model.get( "number" )
). If you use delegation, you have to employ indirect ways. So, as always, there is a trade-off. As long as you look at performance only, though, there isn't.