false event desactivar jquery events click preventdefault

jquery - desactivar - Evite que href abra el enlace pero ejecute otros eventos de vinculación



jquery submit preventdefault (6)

Quiero evitar que los enlaces abran páginas. Así que he escrito esto:

$("a").click(function(e) { e.preventDefault() }

¡Lo cual es genial! Pero esto bloquea mi otro evento:

$(".toolbar a").click(function(e) { ...action... }

Claro que puedo agregar mi acción al primer evento con algunas pruebas, pero ¿existe una forma elegante de evitar que solo se ejecute el evento href?

EDITAR

De hecho, funciona, lo siento. Ver el violín @ raina77ow trabajando aquí: http://jsfiddle.net/HeFS6/


En lugar de e.preventDefault() , ¿ha intentado return false ? Esto también debería evitar el comportamiento predeterminado del navegador.


La respuesta no necesita JQuery.

function alertme() { document.getElementById("wow").innerHTML = "Wow"; }

<a id="wow" href="https://google.com/" onclick="alertme(); return false;">Click to see how this works.</a>

En primer lugar, lo que mostró en su pregunta ya es correcto. En segundo lugar, también puede usar return: false lugar de preventDefault. EDITAR: Ahora he notado que mencionaste que descubriste tus trabajos de ejemplo. Lo siento...


No hay evento href. Eso es con lo que terminarías si evitas el clic predeterminado. Solo deberías usar selectores más específicos.


Puedes usar esto:

event.preventDefault(); event.stopPropagation(); //bind additional actions to the event


Use return false lugar. Puedes ver el siguiente código trabajando here .

​$("a").click(function() { return false; }); $(".toolbar a").click(function() { alert("Do something"); });​

Como señala @ raina77ow con este artículo , usar return false es lo mismo que llamar a event.preventDefault() y event.stopPropagation() . Como tuve problemas sin return false en algunos códigos en el pasado, siempre lo sugiero.

Pero lo más importante aquí es el orden de enlace : su último enlace será su primer código ejecutado. Entonces, cuídate e id.


Use un valor de href vacío como:

<a href="#">Click me</a>

Y crea una función de control para administrar el enlace:

if(controlVariable == true){ $("#myA").attr("href", "mypage.html"); } else{ /*dont change anything..*/ /*make my obligatory fields in red...*/ }

Espero que pueda ayudar.