Tengo un poco de HTML y jQuery que se desliza div
hacia arriba y hacia abajo para mostrarlo u ocultarlo cuando se hace clic en un enlace:
<ul class="product-info">
<li>
<a href="#">YOU CLICK THIS TO SHOW/HIDE</a>
<div class="toggle">
<p>CONTENT TO SHOW/HIDE</p>
</div>
</li>
</ul>
$('div.toggle').hide();
$('ul.product-info li a').click(function(event){
$(this).next('div').slideToggle(200);
}
Mi pregunta es: ¿cómo uso preventDefault()
para detener el enlace que actúa como un enlace y agrega "#" al final de mi URL y salta a la parte superior de la página?
No puedo encontrar la sintaxis correcta, sigo recibiendo un error que dice
preventDefault () no es una función.
javascript
jquery
Chris J Allen
fuente
fuente
href
atributo @KLVTZ de la etiqueta de anclaje (a
) puede no estar vacío ... Pero podemos configurarlo comojavascript:<code-here>
legal / válido. Luego ingresamos<code-here>
solo por una declaración vacía agregando un punto y coma. De esta manera el enlace no hace nada.Se sugiere que no use
return false
, ya que 3 cosas ocurren como resultado:Entonces, en este tipo de situación, en realidad solo debes usar
event.preventDefault();
Archivo del artículo - jQuery Events: Stop (Mis) Using Return False
fuente
Alternativamente, puede devolver false desde el evento click:
Lo que detendría la activación del A-Href.
Sin embargo, tenga en cuenta que, por razones de usabilidad, en un mundo ideal que href aún debería ir a algún lado, para las personas que desean abrir el enlace en una nueva pestaña;)
fuente
Esta es una solución que no es JQuery que acabo de probar y funciona.
fuente
Utilizar
fuente
href="javascript:// Send Email"
Sin embargo, otra manera de hacer esto en Javascript usando
inline onclick
,IIFE
,event
ypreventDefault()
:fuente
<a href='#' onclick="event.preventDefault()">Click Me</a>
después de varias operaciones, cuando la página finalmente debe ir al enlace, puede hacer lo siguiente:
fuente
preventDefault
y luego hacer la acción predeterminada usted mismo? Simplemente haga lo que necesite agregar y deje que se realice el valor predeterminado.¿Por qué no simplemente hacerlo en CSS?
Elimina el atributo 'href' en tu etiqueta de anclaje
En tu css
fuente
Si detener la propagación del evento no te molesta, solo usa
al final de tu manejador. En jQuery evita el comportamiento predeterminado y detiene el burbujeo del evento.
fuente
Puede hacer uso de
return false;
la llamada del evento para detener la propagación del evento, actúa como unaevent.preventDefault();
negación. O puede usar eljavascript:void(0)
atributo href para evaluar la expresión dada y luego regresarundefined
al elemento.Devolver el evento cuando se llama:
Caso nulo:
Puede ver más sobre en: ¿Cuál es el efecto de agregar void (0) para href y 'return false' en el escucha de eventos de clic de la etiqueta de anclaje?
fuente