2012-04-05 186 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中完成整个功能。