Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery在选项卡中打开PDF-正在打开其他选项卡_Javascript_Jquery_Pdf - Fatal编程技术网

Javascript jQuery在选项卡中打开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',

我正在使用jQuery在新窗口或选项卡中打开PDF。在大多数情况下,它是有效的。我可以点击链接,PDF将在一个新选项卡中打开

当我打开另一个PDF时出现问题

新的PDF将与以前的PDF一起打开。当我看到第5个PDF时,我之前打开的PDF中会有4个附加选项卡

我正在处理数据表。我单击一个包含数据属性的链接,然后打开一个模式。在模态内部,我将有另一个单击事件,然后打开PDF:

$('#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);
并在您的
失败之后
案例。这将在您成功获取数据后删除事件。明白了!谢谢您,先生。这就是我要找的。没问题!很乐意帮助:)