jQuery .show () solo funciona por una fracción de segundo

Tengo un div

username:

password:

cancel

Que solo quiero mostrar cuando

 Admin login 

se hace clic. solía

  $(function() { $('a#login').click(function() { $('#fade_bg').show(); $('#login').hide(); }); $('a#cancel').click(function() { $('#fade_bg').hide(); $('#login').show(); }); }); 

Sin embargo, cuando hago clic en el enlace, el div que quiero que aparezca solo aparece por una fracción de segundo, luego vuelve a la normalidad como si hubiera hecho clic en el botón Cancelar. ¿Por qué está pasando esto?

Editar: no hay errores en la consola del depurador JS.

Pruebe de esta manera:

 $('#login').click(function (e) { e.preventDefault(); $('#fade_bg').show(); $(this).hide(); }); $('#cancel').click(function (e) { e.preventDefault(); $('#fade_bg').hide(); $('#login').show(); }); 

DEMO AQUÍ

El botón de enviar siempre publica el formulario para

  

Reemplácelo con