An UpdatePanel completely replaces the contents of the update panel on an update. This means that those events you subscribed to are no longer subscribed because there are new elements in that update panel.
What I’ve done to work around this is re-subscribe to the events I need after every update. I use
$(document).ready() for the initial load, then this snippet below to re-subscribe every update.
var prm = Sys.WebForms.PageRequestManager.getInstance();
// re-bind your jquery events here
If you need more detailed control, this event passes arguments similar to how .NET events are passed arguments
(sender, eventArgs) so you can see what raised the event and only re-bind if needed.
Read more about the RequestManager here: asp.net/…/UpdatePanelClientScripting.aspx (If using .NET 2.0)
Here is the latest version of the documentation from Microsoft: msdn.microsoft.com/…/bb383810.aspx
One other option you may have, depending on your needs is to use jQuery’s
live() event subscriber, or the jQuery plugin
livequery. These methods are more efficient than re-subscribing to DOM elements on every update. Read all of the documentation before you use this approach however, since it may or may not meet your needs. There are a lot of jQuery plugins that would be unreasonable to refactor to use
live(), so in those cases, you’re better off re-subscribing.