e.preventDefault - 有没有办法去做默认?

时间:2012-03-05 12:51:19

标签: javascript jquery javascript-events

让我说我有一个链接:

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

当有人点击它时,我想做点什么,比如:

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

有没有办法在我e.preventDefault之后继续doDefault?

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

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

3 个答案:

答案 0 :(得分:9)

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

现在,如果您希望在.fadeOut()方法完成后导航链接,则应该阻止默认行为并使用fadeOut方法的回调参数在动画结束时进行导航:

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

<强> DEMO

答案 1 :(得分:2)

没有doDefault()命令,您需要重新设计代码。

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

例如:

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

答案 2 :(得分:-1)

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