javascript - bootstrap - ¿Cómo puedo crear un anclaje HTML vacío para que la página no "salte" cuando hago clic en él?
smooth scroll bootstrap (11)
Debes return false;
después del jquery_stuff
:
<a href="no-javascript.html" onclick="jquery_stuff(); return false;" />
Esto cancelará la acción predeterminada.
Estoy trabajando en algunos JQuery para ocultar / mostrar algo de contenido cuando hago clic en un enlace. Puedo crear algo como:
<a href="#" onclick="jquery_stuff" />
Pero si hago clic en ese enlace mientras estoy desplazado hacia abajo en una página, volverá a la parte superior de la página.
Si hago algo como:
<a href="" onclick="jquery_stuff" />
La página se volverá a cargar, lo que anulará la página de todos los cambios que javascript haya realizado.
Algo como esto:
<a onclick="jquery_stuff" />
Me dará el efecto deseado, pero ya no aparece como un enlace. ¿Hay alguna forma de especificar un anclaje vacío para poder asignar un controlador de JavaScript al evento onclick
, sin cambiar nada en la página o mover la barra de desplazamiento?
Ponga un "retorno falso"; en la segunda opción:
<a href="" onclick="jquery_stuff; return false;" />
<a href="javascript:// some helpful comment " onclick="jquery_stuff" />
Usualmente uso un <span>
y lo estilo para que parezca un enlace cuando necesito lograr algo como esto.
Usualmente lo hago:
<a style="cursor:pointer;" onclick="whatever();">Whatever</a>
Puede poner simplemente como a continuación:
<a href="javascript:;" onclick="jquery_stuff">
<a href="javascript:;" onclick="jquery">link</a>
href
requiere algo allí si no desea que aparezcan errores en validadores para html. El javascript:;
es un buen marcador de posición.
Si realmente quieres usar el #
:
<a href="#me" name="me" onclick="jquery">link</a>
Tenga cuidado con el resultado return false;
, detiene los comportamientos predeterminados de lo que sea que estés haciendo.
Además, si su js es como un envío, puede tener problemas con Internet Explorer.
Qué tal esto:
<a href="#nogo" onclick="foo();">some text</a>
Verifique el comentario del párpado (use un botón, no un anclaje). Estaba a punto de publicar el mismo consejo. Un ancla que no se vincula a un recurso y simplemente ejecuta un script debe implementarse como un botón.
Deje de poner sus controladores de eventos en HTML, y deje de usar etiquetas de anclaje que no sirvan para fines semánticos de anclaje. Use un botón y agregue el controlador de clic en su Javascript. Ejemplo: HTML
<button id="jquery_stuff">Label</button>
y JavaScript$(''#jquery_stuff'').click(jquery_stuff);
. Puede usar CSS para darle un estilo al botón para que parezca un enlace, eliminando el relleno, los bordes, el margen y el color de fondo, y luego agregue los estilos de enlace (por ejemplo, color y decoración de texto). - Falta de párpados Oct 19 ''10 a las 17:40
jQuery tiene una función incorporada para esto llamada preventDefault
que se puede encontrar aquí: http://api.jquery.com/event.preventDefault/
Aquí está su ejemplo:
<script>
$("a").click(function(event) {
event.preventDefault();
});
</script>
También puedes construir el enlace así:
<a href="javascript:void(0)" onclick="myJsFunc();">Link</a>
<a href="#" class="falseLinks">Link1</a>
<a href="#" class="falseLinks">Link2</a>
etc.
JQUERY:
$(function() {
$("a.falseLinks").click(function() {
// ...other stuff you want to do when links is clicked
// This is the same as putting onclick="return false;" in HTML
return false;
})
});
@eyelidlessness estaba un poco douchy en la forma en que lo dijo, pero tenía razón. Esta es la forma más limpia de hacerlo. ¿Por qué utilizar jQuery si luego vas a volver a Javascript vainilla para cosas jQuery es más fácil y más limpio?