Pregunta

Tengo el siguiente código que se supone que evita que suceda cualquier cosa cuando haces clic en un enlace, excepto el disparo y la alerta.El destino del enlace se cancela, pero al hacer clic en el enlace se desplaza hasta la parte superior de la página.¿Cómo puedo detener este comportamiento?Gracias

$('a#target').click(function(event){
    event.preventDefault();
    alert('End of demo');
});

ACTUALIZAR mi enlace se ve así:

<a href="#">Submit</a>
¿Fue útil?

Solución

No, se supone que preventDefault no debe detener nada, se supone que debe hacer exactamente lo que dice: evitar la acción predeterminada.es decir.Si hace clic en un enlace con un href, evitará la acción predeterminada del navegador que es ir a ese enlace.

Si desea detener todos los demás eventos adjuntos a ese enlace, debe devolver falso al final del controlador de eventos Y asegurarse de que ese controlador de eventos se ejecute antes que cualquier otro.

ACTUALIZAR:

Gracias por publicar el enlace y el valor href.Apuesto a que lo que está sucediendo es que JavaScript encuentra un error antes de que se pueda activar el controlador de clics.Como indica correctamente el primer comentario sobre esta respuesta, preventDefault también debería evitar que el enlace salte a anclajes dentro de la página.Si no es así, probablemente se deba a que hay un error de JavaScript en otra parte de la página.

Dicho todo esto, ¿estás seguro de que has publicado el HTML correcto?

$('a#target').click(...

Adjunto un controlador de clic a un enlace similar a este:

<a href="#" id="target">Submit</a>

Y una última reflexión: si un elemento ancla solo tiene acciones adjuntas a través de JavaScript, ¿por qué especificar el atributo de opción href?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top