2

我正在使用 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"); 功能,但它仍然打印这些元素。有谁知道在使用上述功能时可以使某些元素不打印的方法?

4

1 回答 1

3

默认情况下,jQuery 只查询它被包含document的地方,而不是后代的文档。您可以通过将 a 设置为您的选择器来解决此问题:windowiframecontext

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

小提琴

参考

于 2013-02-23T22:27:47.457 回答