2012-03-05 189 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中的位置。

相關問題