The above aspx code when rendered on a page changes to
This is because the master and control information in which the .net control resides gets prepended which makes it a little tricky for us to write a selector.
You have a few options. This is by no means comprehensive, but I will give it a try.
$('#<%= myTextBox.ClientID %>')
ClientID - recommended but meh.. not so much. I would try to avoid writing
ClientID if I could. The primary reason being, you can only use it in
.aspx pages and not external
$('[id$=myTextBox]') // id which ends with the text 'myTextBox'
$('[id*=myTextBox]') // id which contains the text 'myTextBox'
Using attribute selectors - recommended too, looks a bit ugly but effective.
I have seen a few questions here, worrying about performance with these selectors. Is this the best way possible? No.
But, most of the time you won't even notice the performance hit, unless of course, your DOM tree is huge.
CssClass - highly recommended. Because selectors using classes are clean and uncomplicated.
In case you are wondering,
CssClass for .net controls is the same as
class for traditional html controls.
ClientIDMode="Static", which got introduced in .NET Framework 4.0, on the control so that it's ID will stay unchanged. - recommended too.
$('#myTextBox') //use the normal ID selector
In my experience, I have seen ugly selectors like
$('#ctl00_Main_myTextBox'). This is the result of directly copy pasting the ID rendered from the page and use it in the script. Look, this will work. But think about what will happen if the control ID or the master ID changes. Obviously, you will have to revisit these IDs and change them again. Instead of that, use one of the options above and be covered.