[EDIT: I solved earlier problem by calling delegateEvents(), but shouldn\'t have to. Re-posting w/more info.]
I have a View that when rendered has a login button on
I found a solution to this, because I was having the same problem, actually detach() is not the solution because it will bring back the old DOM elements for you which is not useful.
this is what you need to do
render: function(){ this.$el.empty(); ...... this.$el.appendTo($DOM); }
if you use the .html() method your events will not trigger. you need to attach the newly created HTML to the DOM, by using appendTo().
by the way this only happened to me if you are using tagName and className to build your view dynamically.