The easiest way I've found is just to match on the end of the mangled ID for most controls. The exceptions that Know of are radiobutton lists and checkbox lists - you have to be a little trickier with them.
But if you have this in your .aspx page:
<asp:TextBox ID="txtExample" runat="server" />
Then your jQuery can easily find that control, even if it's mangled by the master page rendering, like this:
$("[id$=txtExample]")
The $=
operator matches the end of the string and the name mangling is always on the front. Once you've done that, you can get the actual mangled ID like this:
$("[id$=txtExample]").attr("id")
and then parse that anyway you see fit.
EDIT:
This is an easy way, but it may be more of a performance hit than just giving each control a class the same as its old ID.
See this article that Jeff posted a link to on another jQuery optimization question:
jQuery: Performance Analysis of Selectors
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…