2012-04-05 100 views
0

我有一個下載鏈接,並在用戶下載後,我想刪除鏈接到下載並更改文本。我能夠做到這一點,但它速度很快,用戶將無法下載exe文件。如果我以某種方式推遲了,那會是一個解決方案嗎?有沒有更好的方式來做我正在做的事情?通過jquery動作後更改鏈接

這裏是我的JS

function removeLink(){ 
    try{ 
     $('#downloadLink').text("Thank You For Downloading This Software!"); 
     $('#downloadLink').attr('href', 'javascript:void(0)'); 
    } 
    catch(err){ 
     alert(err.message); 
    } 
} 

鏈接

<a href="download.exe" title="Download" id="download" onclick="removeLink()">Download</a> 

我也知道這是不是因爲我只是使用javascript爲它做的很「安全」的方式,但是這主要是僅供普通用戶使用。

+0

removeLink()如何被調用? – 2012-04-05 17:55:51

+0

只要確保你的基地已經覆蓋 - 如果用戶點擊下載,取消它,然後又想再試一次,會發生什麼? – Alain 2012-04-05 18:22:40

回答

1

這樣的事情?

$('#downloadLink').click(function() { 
    $(this).replaceWith('<span>Thanks for downloading...</span>'); 
}); 

如果你仍然有它不工作的問題,把window.location = 'download.exe';在點擊函數的頂部。

+0

這就像一個魅力。我必須將window.location放在函數的頂部,但replaceWith()是一個我不知道的很酷的函數!謝謝! – 2012-04-05 18:23:57

0

那麼 - 知道它不是一個安全的方法 - 這有什麼錯:

$('a').on('click', function() { 
    $(this).text('Thank You For Downloading This Software!').removeAttr('href'); 
});​ 

更改選擇到任何適用的替代$('a')

+0

問題是,它沒有得到下載的機會。它會改變文本和href,但exe文件不會下載我所假設的,因爲JavaScript太快(?) – 2012-04-05 18:18:49

-2

你可能不想功能removeLink()監守你是不是稱它。而是使用

$(document).ready(){ 

}); 

,也爲您的超時問題......

使用jQuery的delay()

另一件事是,你在呼喚#downloadLink ...不要忘記添加ID到標籤。

編輯: 正如其他人說你可能只是想在jQuery中完成整個功能。