2012-03-05 142 views
7

让我们说我有一个链接:e.preventDefault - 有没有办法做到默认?

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

虽然有人点击它,我想要做的事,如:

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

有我e.preventDefault后一种方式,来继续做,默认?像

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

所以它会正常运行的事件?

+1

我昨天问过,也许你想检查http://stackoverflow.com/questions/9556107/can-e-preventdefault-be-reversed – 2012-03-05 12:57:31

回答

8

您只能防止默认行为(使用e.preventDefault())。

现在,如果你期望被导航链接时.fadeOut()方法完成后,您应该防止默认行为,并使用淡出方法的回调参数浏览时动画结束:

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

DEMO

+1

fadeOut是异步的,你必须把代码放到回调方法中它的工作就像那样工作 – NibblyPig 2012-03-05 12:55:27

+0

@SLC。事实上,你是对的。 – 2012-03-05 12:56:29

+0

你假设链接,如果这是表单提交? – 2012-03-05 13:01:15

2

没有doDefault()命令,您需要重新构建您的代码。

我会阻止默认设置,然后通过window.location执行您自己的网址。可能对锚标签使用不同的标签 - 通过覆盖其功能,首先使用它是没有意义的。

例如是这样的:

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

也许this post可以帮助您?您也可以返回false以防止链接转到href中的位置。

相关问题