Cuando quiero prevenir el comportamiento por defecto de la etiqueta de anclaje yo estoy usandoprevenir el comportamiento de anclaje
<a href="javascript:void(0);">link</a>
¿Cuál es la solución más eficaz?
Cuando quiero prevenir el comportamiento por defecto de la etiqueta de anclaje yo estoy usandoprevenir el comportamiento de anclaje
<a href="javascript:void(0);">link</a>
¿Cuál es la solución más eficaz?
Un ejemplo de una solución con gracia degradantes:
<a href="no-script.html" id="myLink">link</a>
<script>
document.getElementById("myLink").onclick = function() {
// do things, and then
return false;
};
</script>
Demostración: http://jsfiddle.net/karim79/PkgWL/1/
Puede también tiene esto:
<a href="#" onclick="return false;">link</a>
Este es un enfoque bien, si estás usando jQuery también se puede hacer:
<a id="link" href="javascript:void(0)">link</a>
<script type="text/javascript">
$("#link").click(function(ev) {
ev.preventDefault();
});
</script>
preventDefault puede ser útil también para evitar la presentación de formulario
Si no desea que el navegador siga el enlace en cualquier lugar, diría que lo que tiene es la solución más simple y segura.
Claro, hay un montón de otras soluciones se podría aplicar con javascript, pero la mayoría de otras maneras puede fallar cuando
return false;
o preventDefault
que podría estar al final de la instrucción, no se ejecutará, y el navegador seguirá el enlace, aunque solo sea a #
.Aquí es muy fácil manera de detener esto.
(function($) {
$('a[href="#"]').click(function(e) {
e.preventDefault();
});
})(jQuery);
Esto también llevará al usuario a la página sin guiones si se produce un error en * hacer cosas * o si el usuario hace clic en el enlace antes de asignar el oyente. No es probable que esto último ocurra si realmente pretendes que se encuentren inmediatamente después del otro en el DOM, como en tu ejemplo, pero eso inhibiría la velocidad de renderizado de páginas, así como la validación de interrupciones (a menos que esto se cambie en las especificaciones de HTML5? ¡No me importaría si fuera así!) Por lo general, estas cosas se asignan en DOMReady lo más pronto posible, lo que en algunos casos puede dejar una ventana considerable para que el usuario haga clic en el enlace. –