我想使用Ajax / Jquery打印特定div,截至目前我正在使用Javascript函数,但它搞砸了页面的所有动态功能:按钮等,
<div id="printableArea">content</div>
<input class="printButton" type="button" value="Print" name="print"
onclick="printDiv()">
<script>
function printDiv() {
var printContents = document.getElementById("printableArea").innerHTML;
var originalContents = document.body.innerHTML;
document.body.innerHTML = printContents;
window.print();
document.body.innerHTML = originalContents;
}
</script>
请让我知道如何解决这个问题,我无法找到任何正确的JQuery代码(正常工作)。
答案 0 :(得分:1)
问题是您要使用要打印的div的内容替换您的正文内容。
这当然产生了许多问题,可能很难解决,其中一个是@Alexander Capone指出的问题。
所以,不要这样做,你可以:
你可以在这里找到确切的方法:How to print selected div instead complete page(前2个答案)。
答案 1 :(得分:0)
根据您的描述,我可以假设&#39;搞砸动态功能&#39;表示重新插入HTML后,某些自定义jquery事件(例如鼠标悬停,单击事件)停止工作。如果是这种情况,则问题隐藏在将这些事件附加到HTML元素的方式中。 而不是像这样附加事件:
$('.some-class').click(function(){
//do logic;
})
您应该在文档元素上附加事件,因此页面知道如何在任何离散时间点将事件委托给任何html元素。
$(document).on('click', '.some-class', function () {
//do logic;
})
答案 2 :(得分:0)
我不知道,但似乎你用代码中的这些行覆盖了你的身体内容:
document.body.innerHTML = printContents;
window.print();
document.body.innerHTML = originalContents;