使用Jquery打印Div,但不要打印全部

时间:2013-02-23 22:14:56

标签: jquery

我正在使用StackOverflow上的这个脚本来打印包含所有内容的div。

<script>
$(document).ready(function(){
    $('#printmodal').click(function(){

        // variables
        var contents = $('#content').html();
        var frame = $('#printframe')[0].contentWindow.document;

    // show the modal div
    $('#modal').css({'display':'block'});

        // open the frame document and add the contents
        frame.open();
        frame.write(contents);
        frame.close();

        //Hide all 'noprint' elements
        $(".noprint").css("display","none");

        // print just the modal div
        $('#printframe')[0].contentWindow.print();

        // hide the modal div
        $('#modal').css({'display':'none'});
    });
});
</script>

然而,有些元素我不想打印,即;按钮等。对于这些元素,它们被赋予了'noprint'的类名。我有一个media =“print”css,但使用上面的功能不起作用。 noprint元素仍在打印。我尝试添加$(“。noprint”)。css(“display”,“none”);功能,但它仍然打印这些元素。有没有人知道在使用上述功能时我可以使某些元素不能打印?

1 个答案:

答案 0 :(得分:3)

默认情况下,jQuery仅查询document中包含它的window,而不查询后代iframe的文档。您可以通过将context设置为选择器来解决此问题:

$(".noprint", frame).css("display","none");

Fiddle

参考