使用Jquery动态添加'download'属性到<a>标签

11

我正在尝试动态地将下载属性添加到一个标签上。这是我目前的代码:

$(fclass).append('<a href="/files/'+$days[$i][2][1]+'" download>'+$days[$i][2][0]+'</a>');

这会产生这个结果:

<a href="/files/day0.pdf" download="">Slideshow (Notes)</a>

我也手动将与此标记完全相同的标记添加到了我的HTML中,但是

<a href="/files/day0.pdf" download="">

我使用了

<a href="/files/day0.pdf" download>
手动版本能够完美地工作并自动下载文件,但是动态放置的版本却不能。我也尝试过这个:
$(a).attr("download","/files/day0.pdf");

但是似乎这并不起作用。有什么想法可以修复这个问题吗?非常感谢。


你忘记在 $(a) 中加上引号了。 - j08691
@j08691 a是一个动态创建的<a>标签的变量,而不是单个的a元素。 - Trevor Judice
@PranavCBalan 仍然只是链接到文件,看起来非常奇怪。不确定为什么,没有下载选项。 - Trevor Judice
$(a).attr("download","/files/day0.pdf"); 将 URL 分配给 download 属性。难道你不是想将 URL 分配给 href 吗? - YSJ
@YSJ download属性的作用是在不重定向到另一页的情况下下载文件。因此,在这样做时,您必须在download属性中引用文件。我还尝试使用href,并将download设置为没有参数的属性,但这并不起作用。 - Trevor Judice
download属性赋的值是你想要保存文件的名称。href中的URL是你要下载的来源。我认为你的意思是<a href="/files/day0.pdf" download>可以工作。但是你运行的一些JavaScript没有起作用。你运行的JavaScript是什么? - YSJ
3个回答

12
答案是

$("a").attr("download", true);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<a href="file-to-download.txt">Download the file</a>

刚刚检查了一下,它正在工作中 :D


0

我曾经遇到过同样的问题,这个方法对我有用:

$("a").replaceWith('<a href="/files/day0.pdf" download="day0.pdf">Slideshow (Notes)</a>');

day0.pdfdownload="day0.pdf" 中是文件的名称。

(在 Firefox 中,您必须将 .pdf 包含在名称中,但在 Chrome 中不需要,它会自动包含扩展名。)


-1

你尝试使用Props了吗?

$(a).prop("download","/files/day0.pdf");


2
download 是一个属性,而不是一个属性。 - dfsq

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接