2012-07-28 37 views
0

我想打印一个页面,其中动态添加内容。我尝试做这样的:打印动态内容 - 在克隆中替换

$("body").on("click", function() { 

    function preparePrint() { 
     var print_window = window.open(); 
     var print_document = $("div.container").clone(); 

     print_document.find('.block').each(replaceWith("X")); 

     print_window.document.open(); 
     print_window.document.write(print_document.html()); 
     print_window.document.close(); 
     print_window.print(); 
     print_window.close(); 
    } 

    $("#print").click(function() { 
     preparePrint(); 
    }) 
}) 

随着每一次点击,该divcontainer类的内容被克隆。 container拥有一些div s和表。在克隆中,我尝试找到类block中的元素,并用大写“X”替换它们。 block是动态添加到某个td的类。

然后,我打开一个新窗口并将克隆的html内容放在那里。然后我打印它。

到目前为止,这么好,但替换不起作用 - 为什么?我也尝试document.write,html()text()在那里得到“X”,但没有效果。我总是以一个白页面结束,所以也许克隆也有问题。

+0

您需要在每个函数中公开对象,然后针对它运行代码。你需要用 - >'print_document.find('。block')来更改replaceWith的功能,每个(function(){$(this).replaceWidth(“X”)});' – Ohgodwhy 2012-07-28 15:44:25

+0

谢谢!使用你的代码(顺便说一句:这里有一个小的错字 - 请参阅'replaceWidth'需要'replaceWith')它的工作原理!我也删除了'on'处理程序,因为它不需要。所以,可以发表你的评论作为一个实际的答案,所以我可以接受它吗? – Sven 2012-07-28 17:15:16

回答

1
print_document.find('.block').each(function(){ $(this).replaceWith("X") });