2012-03-05 24 views
7

digamos que tengo un vínculo:e.preventDefault - ¿hay alguna manera de hacerlo?

<a href='http://example.com/file.zip' id='dl'>Download</a> 

Y mientras que alguien haga clic en él, quiero hacer algo, como por ejemplo:

$("#dl").live("click", function(e){ 
    e.preventDefault(); 
    $("#dlbox").fadeOut(500); 
}); 

¿Hay alguna manera después de que e.preventDefault, a adelante y doDefault? algo así como

$("#dl").live("click", function(e){ 
    e.preventDefault(); 
    $("#dlbox").fadeOut(500); 
    e.doDefault(); 
}); 

por lo que se ejecutará el evento normalmente?

+1

Le pregunté esto ayer, tal vez usted quiere comprobar http://stackoverflow.com/questions/9556107/can-e-preventdefault-be-reversed –

Respuesta

8

Solo puede evitar el comportamiento predeterminado (con e.preventDefault()).

Ahora bien, si usted espera que el enlace a ser navegado cuando el método .fadeOut() ha terminado, se debe evitar que el comportamiento predeterminado y utilizar el parámetro de devolución de llamada del método fadeOut para navegar cuando la animación ha terminado:

$("#dl").live("click", function(e){ 
    e.preventDefault(); 
    var href = this.href; 
    $("#dlbox").fadeOut(500, function() { 
     window.location = href; 
    }); 
}); 

DEMO

+1

fadeOut es asíncrono, tendría que poner el código en el método de devolución de llamada de fadeout para que funcione de esa manera – NibblyPig

+0

@SLC. De hecho, tienes razón. –

+0

está asumiendo enlace, ¿y si es un envío de formulario? –

2

No hay ningún comando doDefault(), necesita volver a diseñar su código.

Impediría el valor predeterminado, luego realice la url directamente a través del window.location. Posiblemente use una etiqueta diferente para una etiqueta de anclaje también; al anular su funcionalidad, no tiene sentido usarla en primer lugar.

por ejemplo, algo como esto:

$("#dl").live("click", function(e){ 
    e.preventDefault(); 
    $("#dlbox").fadeOut(500, function() { window.location='www.fish.com'; }); 
}); 
0

Tal this post puede ayudarle? También puede devolver falso para evitar que el enlace vaya a la ubicación en el href.

Cuestiones relacionadas