Quiero crear una etiqueta de anclaje que ejecute algo de JavaScript y luego proceda a ir a donde href
lo esté llevando. Invocar una función que ejecuta mi JavaScript y luego establece window.location
o top.location
en la href
ubicación no funciona para mí.
Entonces, imagina que tengo un elemento con id "Foo" en la página. Quiero crear un ancla similar a:
<a href="#Foo" onclick="runMyFunction(); return false;">Do it!</a>
Cuando se hace clic en esto, quiero ejecutar runMyFunction y luego saltar la página a #Foo
(no causar una recarga, el uso top.location
haría que se recargara la página).
Sugerencias Estoy feliz de usar jQuery si puede ayudar aquí ...
javascript
jquery
html
anchor
psicotik
fuente
fuente
return true;
es la solución, pero también puedes llamarlocation.hash = '#Foo'
. No recargará la página.Respuestas:
¿Solo en su
return true
lugar?El valor de retorno del
onClick
código es lo que determina si la acción de clic inherente del enlace se procesa o no; regresarfalse
significa que no se procesa, pero si regresatrue
, el navegador procederá a procesarlo después de que su función regrese y vaya a la ancla.fuente
undefined
se considerara falso para estos fines.y
De esta manera, tendrá su función ejecutada Y seguirá el enlace Y seguirá el enlace exactamente después de que su función se haya ejecutado correctamente.
fuente
Si el enlace solo debe cambiar la ubicación si la función se ejecuta correctamente, entonces hágalo
onclick="return runMyFunction();"
y en la función devolvería verdadero o falso.Si solo desea ejecutar la función y luego dejar que la etiqueta de anclaje haga su trabajo, simplemente elimine la
return false
declaración.Como nota al margen, probablemente debería usar un controlador de eventos en su lugar, ya que JS en línea no es una forma muy óptima de hacer las cosas.
fuente
Al hacer una estructura HTML limpia, puede usar esto.
fuente