2010-01-18 15 views
21

evitar el anclaje creé una función en javascript que puedo añadir a un ancla como talJavascript desplazamiento para arriba al hacer clic

javascript:

somefunction = function() {alert('foo')} 

html:

<a href="#" onclick="return somefunction()">anchor</a> 

cada vez que haga clic en el ancla la función se ejecuta pero la pantalla se desplaza a la parte superior

Sé que podría hacer esto

<a href="javascript:void(0)" onclick="return somefunction()">anchor</a> 

pero he visto la primera opción implementada sin este cateto de desplazamiento hacia arriba

¿hay algún truco para que?

gracias

Respuesta

46

El onclick hace que la página vuelva a presentar, por lo tanto, desplazándose hasta la parte superior.

Necesita que el evento onclick devuelva un mensaje falso para evitar la devolución de datos.

Esto se puede hacer cambiando su función para devolver un falso:

somefunction = function() {alert('foo'); return false;} 

O para cambiar el enlace y evento de clic de hacerlo:

<a href="javascript:void(0)" onclick="somefunction(); return false;">anchor</a> 
2

Volver false de su manejador onclick, por ejemplo:

<a href="#" onclick="somefunction(); return false;">anchor</a> 
2

Es necesario hacer somefunction() retorno false, o necesita agregar explícitamente return false a su controlador onclick. Por ejemplo:

<a href="#" onclick="somefunction(); return false;">anchor</a> 

Esto tendrá el navegador ignora la parte href del enlace cuando alguien hace clic en él.

4

El truco es que su onclick devuelve el valor de somefunction, de manera que si se asegura siempre somefunctionreturn false, entonces el evento volverá falsa también, y cancela el comportamiento predeterminado del anclaje.

lo que este debe resolver su problema:

somefunction = function() { alert('foo'); return false; } 

Pero debo mencionar que cuando hay un error en algún lugar de somefunction, el resto de la javascript no se ejecutará, y el navegador todavía se siga el enlace a #. Por lo tanto, es aconsejable usar javascript:void(0), ya que esto le eliminará ese problema.

Cuestiones relacionadas