jquery - unwrap - ¿Cómo cancelar la navegación cuando el usuario hace clic en un enlace(elemento<a>)?
obtener el texto de un label jquery (9)
Intento cargar algunas cosas usando AJAX cuando un usuario hace clic en un enlace, pero quiero que el enlace vaya realmente a alguna parte para que la aplicación siga funcionando cuando javascript esté desactivado. ¿Hay alguna manera de hacer algo con javascript y cancelar la navegación cuando se hace clic en un enlace?
¿Cuál es la mejor práctica? ¿Se puede hacer eso, o necesito reemplazar el enlace usando javascript o qué?
¿Por qué jQuery?
HTML:
<a href="no_javascript.html" onclick="return doSmth()">Link</a>
... y código de JavaScript:
function doSmth(){
// your code here
return false
}
La mejor manera debe ser esto.
<a href="javascript:undefined"></a>
Lo que haría sería:
a. para el atributo href, javascript:void();
se establecerá
segundo. para el evento onclick, proporcionará una función para manejar el evento click y esa función devolverá false.
p.ej:
<script type="text/javascript">
function myfunction()
{
//do something
return false;
}
</script>
<a href="javascript:void();" onclick="myfunction()">Link</a>
Nada de esto funcionó para mí con el navegador Google Chrome.
Esto es lo que funcionó (usando jQuery):
$(document).ready(function() {
$(''#mylink'').click(function(event) {
doSomethingCool();
event.preventDefault(); // cancel the event
});
});
Si tienes HTML así:
<a href="no_javascript.html" id="mylink">Do Something</a>
Harías algo como esto con jQuery:
$(document).ready(function() {
$(''#mylink'').click(function() {
doSomethingCool();
return false; // cancel the event
});
});
Todo lo que tiene que hacer es cancelar el evento click con Javascript para evitar que ocurra la acción predeterminada. Entonces, cuando alguien hace clic en el enlace con Javascript habilitado, doSomethingCool();
se llama y el evento click se cancela (por lo tanto, el resultado es return false;
) y evita que el navegador vaya a la página especificada. Si tienen Javascript desactivado, sin embargo, los llevaría a no_javascript.html
directamente.
Uso document.location.replace
para navegar, pero cuando quiero cancelar la navegación, return false
(en la misma función que document.location.replace
) no cancela la navegación.
es simple, use el atributo rel = "nofollow"
<a href="signin.php" rel="nofollow">sign in</a>
para IE al menos, simplemente ponga this.event.returnValue = false;
al final del método.
p.ej:
function onClickFunction()
{
someMethod();
this.event.returnValue = false;
}
Tenía un método complejo donde esto funcionó.
<a href="http://www.google.com" class="ignore-click">Test</a>
con jQuery:
<script>
$(".ignore-click").click(function(){
return false;
})
</script>
con JavaScript
<script>
for (var i = 0; i < document.getElementsByClassName("ignore-click").length; i++) {
document.getElementsByClassName("ignore-click")[i].addEventListener(''click'', function (event) {
event.preventDefault();
return false;
});
}
</script>
.ignore-click
clase. .ignore-click
a tantos elementos como desees y haces clic en esos elementos serán ignorados