You need to look at the markup as rendered by .NET rather than the server side code.
So, by looking at the markup, you'll see that this:
<asp:HyperLink ID="a" runat="server" ImageUrl="1.png" NavigateUrl="https://google.com/"></asp:HyperLink>
renders this (At least in .net 4.0):
<a id="a" href="https://google.com/">
<img alt="" src="1.png">
</a>
While in my little test project the markup id matches the webforms id, this isn't always the case.
So, to change the image with jquery, you'd just say:
$('img', $('#<%= a.ClientID %>')).attr('src', '2.png');
This finds the image tag inside the tag with the ID of a and changes it's src attribute.
A word of advice - use better ID names than 'a'. You're markup needs to be easily decipherable. Also, when dealing with webforms (like I said above), always use <%= tagid.ClientID %> in the jquery.