我生成了多个链接,以允许客户下载文件。所有链接都类似:
<a href="http://example.com/index.php?main_page=download&order=3&id=5" class="downloadLink">File 1</a>
<a href="http://example.com/index.php?main_page=download&order=3&id=6" class="downloadLink">File 2</a>
<a href="http://example.com/index.php?main_page=download&order=3&id=7" class="downloadLink">File 3</a>
我想在页面加载时自动开始下载(显示“另存为”弹出窗口或直接下载)。
是否有使用jQuery的简单方法?我设法提出了这段代码
$(document).ready(function() {
$( ".downloadLink" ).each(function() {
var a_href = '';
$( this ).on( "click", function() {
var a_href = $(this).attr('href');
window.location.href = a_href;
alert(a_href);
});
$( this ).trigger('click');
});
});
,但似乎不起作用-只有最新链接显示“另存为”弹出窗口。但是,将显示所有3条警报。我在做什么错了?
谢谢!
答案 0 :(得分:1)
点击后,您可以打开每个链接的窗口/标签。由于网址是文件下载链接,因此将提示用户保存文件。保存/取消新窗口/选项卡将关闭,仅保留主页。
请检查以下代码。在此,单击链接后,将防止默认行为,并且每个下载链接都在新窗口中打开。 由于网址是下载链接,因此将提示用户下载文件,并且在保存/取消时,新窗口将关闭,而父窗口保持不变。
$(document).ready(function() {
$('a.downloadLink').on('click', function(event){
event.preventDefault();
var clicked_lnk = $(this);
window.open(clicked_lnk.attr('href'));
$('a.downloadLink').not(clicked_lnk).each(function(){
window.open($(this).attr('href'));
});
});
});
代码'$('a.downloadLink')。not(clicked_lnk).each(function(){...}'中的'.not(clicked_lnk)'是为了防止循环发生的连锁点击事件循环单击一个元素。
答案 1 :(得分:1)
感谢Tanvir,找到了解决方案。
$(document).ready(function() {
$( ".downloadLink" ).each(function() {
var a_href = '';
$( this ).on( "click", function() {
var a_href = $(this).attr('href');
window.open(a_href);
});
$( this ).trigger('click');
});
});
因此,不是使用window.location.href
,而是使用window.open
-这不是最漂亮的解决方案,但它似乎可以工作...