抱歉,如果我错过了什么(我是JS的初学者)。我希望使用PrintThis.js JQuery插件将打印按钮添加到任何带有"printdiv“类的div中。我使用Jquery对按钮和div类进行编号,并将所需的JQuery代码附加到页面底部的脚本标记中。
这是我用我正在使用的代码做的一个代码。https://codepen.io/hinte019/pen/yEybmG?editors=1010
这也是代码形式的
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="printthis/printThis.js"></script>
</head>
<body>
<div class="printdiv"><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem voluptatibus, magni, alias eaque dolor quisquam placeat, similique atque ratione fugiat impedit nam numquam accusantium. Deserunt reiciendis nulla omnis necessitatibus, quo.</p></div>
<div class="printdiv"><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sit labore commodi, magnam corrupti dignissimos hic soluta. Distinctio quod saepe, tempora inventore ipsum, eligendi, dignissimos, eos recusandae perspiciatis odit consequuntur! Optio.</p></div>
<div class="printdiv"><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptate distinctio fugiat earum, quibusdam soluta ipsa voluptas porro nostrum cupiditate vel modi nesciunt sint rem, vitae id exercitationem debitis, saepe eius?</p></div>
<script>
$(function () {
// print divs
var i = 1;
$("body script").append('$(document).ready(function () {');
$('.printdiv').each(function(){
$(this).removeClass('printdiv').addClass('printdiv'+i);
$('.printdiv'+i).prepend('<button type=\"button'+i + '\" class=\"btn btn-primary printbutton' +i + '\">Print<\/button>');
var printcode = '\r\n $(\'.printbutton'+i + '\').click(function () {\r\n $(\'.printdiv'+i + '\').printThis();\r\n });';
$("body script").append(printcode);
i++;
});
$("body script").append('\r\n});');
});
</script>
</body>
</html>
这将导致打印
$(document).ready(function () {
$('.printbutton1').click(function () {
$('.printdiv1').printThis();
});
$('.printbutton2').click(function () {
$('.printdiv2').printThis();
});
$('.printbutton3').click(function () {
$('.printdiv3').printThis();
});
});
结果代码应该是正确的,但打印按钮不起作用:(
发布于 2018-05-31 00:29:42
问题是,正文中的script
(您在其中附加代码)已经被js引擎解析/处理,因此您无法更改其内容。
您应该创建一个内存中的script
,并在填充它之后将其附加到DOM。
$(function() {
// print divs
var i = 1;
var script = $('<script>');
script.append("$(document).ready(function () {");
$(".printdiv").each(function() {
$(this)
.removeClass("printdiv")
.addClass("printdiv" + i);
$(".printdiv" + i).prepend(
'<button type="button' +
i +
'" class="btn btn-primary printbutton' +
i +
'">Print</button>'
);
var printcode =
"\r\n $('.printbutton" +
i +
"').on('click', function () {\r\n $('.printdiv" +
i +
"').printThis();\r\n });";
script.append(printcode);
i++;
});
script.append("\r\n});");
script.appendTo('body');
});
https://stackoverflow.com/questions/50609105
复制相似问题