使用jquery从html克隆中删除元素标记时出错

时间:2018-05-09 12:48:10

标签: javascript jquery html

获取基于id的html div并对其进行克隆并尝试删除特定的css类以获取跟随错误。

  

错误:来源无效 - 请指定HTML元素或字符串。

document.getElementById("btnPrint").onclick = function() {
  var cont = $('#element-to-print').clone(); // clone of html div
  var newt = $(cont).find(".masteredit").remove(); // trying to remove the particular css class from clone.
  html2pdf(newt, { // sending clone(newt) to print
    margin: 0.25,
    filename: $scope.defendantHeader.firstName + "-" + $scope.defendantHeader.lastName + "-" + $scope.defendantHeader.activeFileNumber,
    image: {
      type: 'jpeg',
      quality: 0.98
    },
    html2canvas: {
      dpi: 192,
      letterRendering: true
    },
    jsPDF: {
      unit: 'in',
      format: 'letter',
      orientation: 'portrait'
    },
    });
  }))
}

3 个答案:

答案 0 :(得分:0)

.css()函数删除整个html元素。使用removeClass()函数或{{1}}删除与css相关的问题。

答案 1 :(得分:0)

尝试使用var newt = $(cont).removeClass("masteredit");

答案 2 :(得分:0)

错误是因为你正在为html2pdf()构造函数提供一个jQuery对象,当它需要一个字符串或Element对象时(根据documentation)。

请注意,当您使用不显眼的事件处理程序时,您正在使用过时的onclick属性。此外,您再次重建cont对象,这是可以避免的。试试这个:

$(function() {
  $('#btnPrint').click(function() {
    var $cont = $('#element-to-print').clone();
    $cont.find(".masteredit").remove();

    html2pdf($cont[0], { 
      margin: 0.25,
      filename: $scope.defendantHeader.firstName + "-" + $scope.defendantHeader.lastName + "-" + $scope.defendantHeader.activeFileNumber,
      image: {
        type: 'jpeg',
        quality: 0.98
      },
      html2canvas: {
        dpi: 192,
        letterRendering: true
      },
      jsPDF: {
        unit: 'in',
        format: 'letter',
        orientation: 'portrait'
      },
    });
  }))
}