Whenever you implement "runat='server'" on an element, ASP.NET creates a unique id. 

     id='myControl' ... becomes ... id='ctl00_cphBody_deepWithin_anotherCtl_myControl'

I'm certainly not complaining, abstraction is great, but when you're using the ID as a selector in jQuery, you'll quickly run into issues with Server Controls.  There are a couple of ways, which I can think of, to get around this problem, both have their pros and cons.  

Server Tags

Providing your jQuery is on the same page as your server controls, you can use server tags to write the UniqueID to the page at runtime.

  $("#<%= myControl.ClientID%>").

The problem with this solution is that any jQuery written in external files can't implement it.  Though it would be my opinion that hard-coded ids in external files is bad design, though I'd welcome arguments against that statement.

Wild Card Selecting

An alternative way would be to use jQuery's wild card selection.

   $("[id$='myControl']");

With the wild card selection you have to consider a couple of things.  First off, ASP.NET uses this unique id to ensure that when you nest controls within controls there's no mismatch of ids, so uses a wild card could create bugs, depending on your project.  Secondly, you must consider performance; jQuery is having to search through all elements in order to find your control and no matter how good the algorithm is, it must mean a performance hit.