Javascript jQuery在选项卡中打开PDF-正在打开其他选项卡
我正在使用jQuery在新窗口或选项卡中打开PDF。在大多数情况下,它是有效的。我可以点击链接,PDF将在一个新选项卡中打开 当我打开另一个PDF时出现问题 新的PDF将与以前的PDF一起打开。当我看到第5个PDF时,我之前打开的PDF中会有4个附加选项卡 我正在处理数据表。我单击一个包含数据属性的链接,然后打开一个模式。在模态内部,我将有另一个单击事件,然后打开PDF:Javascript jQuery在选项卡中打开PDF-正在打开其他选项卡,javascript,jquery,pdf,Javascript,Jquery,Pdf,我正在使用jQuery在新窗口或选项卡中打开PDF。在大多数情况下,它是有效的。我可以点击链接,PDF将在一个新选项卡中打开 当我打开另一个PDF时出现问题 新的PDF将与以前的PDF一起打开。当我看到第5个PDF时,我之前打开的PDF中会有4个附加选项卡 我正在处理数据表。我单击一个包含数据属性的链接,然后打开一个模式。在模态内部,我将有另一个单击事件,然后打开PDF: $('#resultsTable').on('click', 'tr > td > a.uploadDocs',
$('#resultsTable').on('click', 'tr > td > a.uploadDocs', function(e)
{
e.preventDefault();
$('#editForm input, select').val(''); // <- clear previous values
var editbooking = $(this).attr('data-editbooking');
var editpartnercode = $(this).attr('data-editpartnercode');
// open PDF click event
// takes vars editbooking and editpartner to build path and filename
$('#downloadPDF').on('click', function()
{
var pdf = '../PartnerUploads/' + editpartnercode + '/' + editbooking + ".pdf";
$.get(pdf)
.done(function()
{
window.open(pdf);
}).fail(function(textStatus)
{
if(textStatus.status == 404)
{
return false;
}
});
// *** edit ***
$('#downloadPDF').off('click');
});
});
$('resultsTable')。在('click','tr>td>a.uploadDocs',函数(e)
{
e、 预防默认值();
$('#editForm input,select').val('')/如注释中所述,您有嵌套的事件绑定
每次单击#resultsTable
,每次都会为#downloadPDF
创建一个新事件,从而使打开的选项卡数量呈指数级增长
在窗口后使用。打开(pdf);
和失败(函数(textStatus)
中的一个
解决方案:
$('#resultsTable').on('click', 'tr > td > a.uploadDocs', function(e)
{
e.preventDefault();
$('#editForm input, select').val(''); // <- clear previous values
var editbooking = $(this).attr('data-editbooking');
var editpartnercode = $(this).attr('data-editpartnercode');
// open PDF click event
// takes vars editbooking and editpartner to build path and filename
$('#downloadPDF').on('click', function()
{
var pdf = '../PartnerUploads/' + editpartnercode + '/' + editbooking + ".pdf";
$.get(pdf)
.done(function()
{
window.open(pdf);
$('#downloadPDF').off('click');
}).fail(function(textStatus)
{
if(textStatus.status == 404)
{
return false;
}
$('#downloadPDF').off('click');
});
});
});
$('resultsTable')。在('click','tr>td>a.uploadDocs',函数(e)
{
e、 预防默认值();
$('#editForm input,select').val('')//您在$('#resultsTable')中有嵌套的事件侦听器。on('click')
意味着每次按下它,您都将创建一个新的$('#downloadPDF')。on('click')
事件。您可以使用$('#downloadPDF')。off('click'))
每次删除第二个事件。@Alex-我尝试了你的建议,但现在PDF根本没有打开。你是在$(''downloadPDF')之后添加它的吗。打开(…)
块吗?美元(''downloadPDF').off('click')应该看起来和$('downloadPDF')一模一样吗?打开('click')事件?实际上。你需要使用$('downloadPDF').off('click'))
在窗口之后。打开(pdf);
并在您的失败之后
案例。这将在您成功获取数据后删除事件。明白了!谢谢您,先生。这就是我要找的。没问题!很乐意帮助:)